——HttpClient

android5.0之前常用

android5.0之后,被HttpURLConnecetion替代

android6.0完全被舍弃

HttpClient是Apache提供的Http网络访问接口。完成的功能和HttpURLConnection几乎一模一样的效果,但两者的用法有很大的差别。

在一般情况下,如果只是需要向Web站点的某个简单页面提交请求并获取服务器响应,完全可以使用前面介绍的HttpURLConnection来完成,但是在绝大部分情况下,Web站点网页没这么简单,这些页面并不是通过一个简单的URL就可访问的,可能需要用户登录而且具有相应的权限才可访问该页面,在这种情况下,就需要涉及Session,Cookie的处理了。

HttpClient是一个简单的HTTP客户端,并不是浏览器。可以用于发送HTTP请求,接受HTTP响应,但不会缓存服务器的响应,不能执行HTML页面中嵌入的javascript

代码,也不会对页面进行任何解析,处理。

HttpClient会自动维护与服务器之间的Session状态,但是前提是使用同一个HttpClient对象发送请求。

使用HttpClient的步骤:HttpClient是一个接口。

a)创建HttpClient对象:new DefaultHttpClient();

b)如果需要发送GET请求,创建HttpGet对象,并指定地址。

如果需要发送Post请求,创建HttpPost对象,

c)如果需要发送请求参数,可调用HttpGet,HttpPost共同的setParams(HttpParams)方法来添加请求参数,对于HttpPost对象而言,也可调用setEntity(HttpEntity)方法设置请求参数。

使用HttpEntity下的UrlEncodedFormEntitiy对象传入一个放入BasicNameValuePair的集合中提交的数据。

如:

HttpPost post=new HttpPost("");

List<NameValuePair> list=new ArrayList<>();

list.add(new BasicNameValuePair("name",name));

list.add(new BasicNameValuePair("pwd", pwd));

post.setEntity(new UrlEncodedFormEntity(list,"UTF-8"));

d)调用HttpClient对象execute(HttpUriRequest)发送请求,执行该方法返回一个HttpResponse;

e)调用HttpResponse的getstatusLine().getStatesCode()方法可以获取响应的状态码,如果是200就代码是成功的状态。调用HttpResponse的getEntity()方法获取HttpEntity对象,

该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。然后再用

EntityUtils.toString(HttpEntity,"编码方式")将其转成为字符串。

——HttpClient返回不同数据的解析方式

a)返回普通的text数据

b)返回html数据

c)返回xml数据

xml的解析可以采用sax,dom,dom4j,pull,之前的几篇我说过xml解析的~

d)返回JSON数据(JSON的知识在json.txt文件中)

注意:

1.中文乱码问题:三种方式

String n=URLEncoder.encode("张三", "UTF-8");

String n=EncodingUtils.getString("张三".getBytes(),"UTF-8");该方式已经过时了

con.setRequestProperty("Charset", "UTF-8");

2.HttpClient类把编译版本换到6.0以下应该就能用了,

在6.0的时候删除httpclient了,

在5.1他就过时了,官方不推荐使用了.

下一篇我简单说一下HttpClient的异步请求数据~

Android之HttpClient的详解相关推荐

  1. android jar 包 意见反馈功能,android重点jar包详解.docx

    android重点jar包详解 深入理解View(一):从setContentView谈起 我们都知道?MVC,在Android中,这个?V?即指View,那我们今天就来探探View的究竟.在onCr ...

  2. Android应用坐标系统全面详解

    Android应用坐标系统全面详解 原文链接:CSDN@工匠若水,http://blog.csdn.net/yanbober/article/details/50419117 1. 背景 去年有很多人 ...

  3. Android NFC开发实战详解

    Android NFC开发实战详解 Android开发实战详解NFC国内第一本AndroidNFC开发书籍带你开启AndroidNFC开发的神秘之旅大综合案例帮助读者快速进入实战角色:WiFi快速连接 ...

  4. Android Gradle 自定义Task详解二:进阶

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78523958 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  5. Android Gradle 自定义Task 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  6. android ------- 开发者的 RxJava 详解

    在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github:  https://github.com/ReactiveX/RxJava  https://githu ...

  7. Android自定义属性,format详解

    1. reference:参考某一资源ID. (1)属性定义: <declare-styleable name="名称"><attr name="bac ...

  8. android layout_width 属性,android:layout_weight属性详解

    在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示.android并没用提 ...

  9. 宏锦软件 Android 的 ListView 使用详解

     宏锦软件爱好者在开发Android软件时,对ListView的使用有点陌生,于是翻了许多资料,这里给大家一份比较好的教程,希望有用. 在android开发中ListView是比较常用的组件,它以 ...

最新文章

  1. shiro(2)-架构与配置
  2. 微软桌面5.0新增时间线功能
  3. oracle的函数索引怎么建,如何创建oracle函数索引
  4. 【Android 逆向】Android 权限 ( ro.product.cpu.abi 属性 | ro.zygote 属性 | dhcp.eth0 属性 | net.* 属性 )
  5. java8函数式编程 视频_快速掌握Java8 Stream函数式编程技巧
  6. boost::fusion::push_front用法的测试程序
  7. jdk自带的Unicode转utf8工具
  8. 爬虫苦训第一天,我的第一个爬虫!!!
  9. Kotlin学习笔记26 协程part6 协程与线程的关系 Dispatchers.Unconfined 协程调试 协程上下文切换 Job详解 父子协程的关系
  10. [mark] some free templates sites
  11. JSK-387 求偶数和【入门】
  12. 神经网络高维互信息计算Python实现(MINE)
  13. 安利几个优秀的开源电商系统
  14. Android模拟器使用SD卡(2)
  15. 白帽黑客学习之路-python篇-基础
  16. 机器学习框架Ray——Actor模型
  17. “野味消费”演变趋势洞察
  18. 普通地图的六大要素_地图的构成要素和基本特性
  19. 液冷数据中心如何构建,蓝海大脑液冷技术保驾护航
  20. 如何提高深度学习预测准确率

热门文章

  1. Deepin20.9 在线安装qt6.5.1
  2. STM32内部Flash的使用
  3. 设置网址导航为首页原来也可以赚点零花钱
  4. 微信红包照片来了,用变色龙隐形二维码赚点零花钱
  5. python做手机应用宝下载_20行Python代码爬取下载应用宝所有APP软件
  6. 改变自己命运的经典名言短语
  7. 大厂们的金融广告频翻车:品效合一策略已消亡
  8. vs的快捷键修改步骤
  9. 重要核心词汇(一)(2020.12.24)
  10. 【matplotlib】matplotlib使用详解 使用python绘制漂亮的论文数据图