Android之HttpClient的详解

——HttpClient

       android5.0之前常用

       android5.0之后,被HttpURLConnecetion替代

       android6.0完全被舍弃

       HttpClientApache提供的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)调用HttpResponsegetstatusLine().getStatesCode()方法可以获取响应的状态码,如果是200就代码是成功的状态。调用HttpResponsegetEntity()方法获取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的异步请求数据~


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值