路要走,生活还得继续。

Hardworking Now

HttpClient学习笔记

今天长沙又开始下雨了,气温也骤降,觉得挺不方便的,离比赛的时间也越来越近。

今天着重看了下网络连接和JSON解析,今天来写写网络连接,JSON就留给下次吧~


首先先简单介绍一下HttpClient,HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。但是从API23开始,Google已经移除了Apache HttpClient 相关类,如果要继续使用,在Android studio对应的module下的build.gradle文件中加入:

android {
useLibrary 'org.apache.http.legacy'
}

接下来我们来看看怎么使用:

HttpClient:是一个接口

首先需要先创建一个DefaultHttpClient的实例

 HttpClient httpClient =new DefaultHttpClient();

发送GET请求:

先创建一个HttpGet对象,传入目标的网络地址,然后调用HttpClient的execute()方法即可:

 HttpGet httpGet=new HttpGet("http://www.lzllzl.cn");
                    HttpResponse httpresponse=httpClient.execute(httpGet);

发送POST请求:

创建一个HttpPost对象,传入目标的网络地址:

  HttpPost httpPost=new HttpPost(“http://www.lzllzl.cn”);

通过一个NameValuePair集合来存放待提交的参数,并将这个参数集合传入到一个UrlEncodedFormEntity中,然后调用HttpPost的setEntity()方法将构建好的UrlEncodedFormEntity传入:

List<NameValuePair>params=newArrayList<NameValuePair>();

Params.add(new BasicNameValuePair(“username”,”admin”));

Params.add(new BasicNameValuePair(“password”,”123456”));

UrlEncodedFormEntity entity=newUrlEncodedFormEntity(params,”utf-8”);

httpPost.setEntity(entity);

接下来和GET方法一样,调用execute()方法即可。

   HttpResponse httpresponse=httpClient.execute(HttpPost);

执行execute()方法之后会返回一个HttpResponse对象,服务器所返回的所有信息就保护在HttpResponse里面.

先取出服务器返回的状态码,如果等于200就说明请求和响应都成功了:

if (httpresponse.getStatusLine().getStatusCode() == 200) {
                      HttpEntity entity=httpresponse.getEntity();
                      String response =EntityUtils.toString(entity,"utf-8");
                        //接下来可以进行自己想要的操作
                   }

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。

 

 

 

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注