今天长沙又开始下雨了,气温也骤降,觉得挺不方便的,离比赛的时间也越来越近。
今天着重看了下网络连接和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协议的了解会更加深入。