——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. mysql onlibe all_MySQL Online DDL
  2. KNN算法(K最近邻算法)详解
  3. 一款非常不错的聊天工具
  4. FieldGroup绑定的日期类型存储格式的问题
  5. 100+人的企业IP怎么进行安全配置 ?
  6. Socket请求获取数据
  7. fullcalendar 显示的时间间隔只有四十五分钟_【体能新视点】——女子篮球运动员比赛期间的心率、血乳酸浓度和时间运动分析...
  8. C++ C# 中作用域限定符
  9. android开机动画多长时间_Android系统开机动画的一生
  10. 7-133 谷歌的招聘 (20 分)
  11. 二叉链表之寻找两节点的最近公共祖先☆
  12. C++ 11使用thread类多线程编程
  13. 【VS2010学习笔记】【异常处理】一(无法启动此程序,因为计算机中丢失libiconv-2.dll)
  14. log4j.xml配置示例
  15. 如果报华为网络工程师中级培训班一般学费多少?
  16. java解析word 波浪线,word页面边框双波浪线
  17. leetcode 1905. 统计子岛屿(C++、java、python)
  18. python仿真图_python控制系统仿真库control(一)伯德图
  19. iPhone PP助手越方法
  20. MySQL Day01

热门文章

  1. ubuntu下的一些常用软件游戏
  2. 服务器文件夹怎么取名,你知道怀旧服服务器都是怎么取名字的吗?来看看这些名字的出处...
  3. 投资学股票交易日志汇总
  4. 小米android n 分屏,红米Note 4X亲儿子:MIUI分屏仅支持Android N底包机型
  5. 基于ssm框架的汽车配件管理系统
  6. mysql nginx
  7. 梦幻西游服务器一直维护,梦幻西游:师门收服的时候服务器维护了,能一直等到维护结束吗?...
  8. win10计算机正在处理器,厉害了,高通处理器居然可以支持Win10电脑了!
  9. 使用可画怎么进行抠图,可画抠图步骤
  10. python简单心形代码爱情闪字_寄语大全之qq空间伤感寄语闪字