第一行代码总结:10网络:10.2.2使用HttpClient

  • Post author:
  • Post category:其他


HttpClient是Apache提供的HTTP网络访问接口。因为是一个接口,因此无法创建它的实例,通常情况下都会创建一个DefaultHttpClient的实例。

步骤:

1、获得HttpClient类型的实例。

HttpClient httpClient = newDefaultHttpClient();

2、如果想要发起一条GET请求:

(1)创建一个HttpGet对象,并传入目标的网络地址;

HttpGet httpGet = newHttpGet(“http://www.baidu.com”);

(2)调用HttpClient的execute()方法,该方法执行完之后会返回一个HttpResponse对象:

HttpResponse httpResponse = httpClient.execute(httpGet);

3、如果想要发起一条POST请求:

(1)先创建一个HttpPost对象,并传入目标的网络地址:

HttpPost httpPost = new HttpPost(“

http://www.baidu.com

”);

(2)然后通过一个NameValuePair集合来存放带提交的参数:

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

params.add(newBasicNamePair(“username”,”admin”));

params.add(newBasicNamePair(“password”,”123456”));

(3)然后将这些参数集合传入到一个UrlEncodedFormEntity中,构建出其对象,然后调用HttpPost的setEntity()方法,将构建好的UrlEncodedFormEntity对象传入:

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

httpPost.setEntity(entity);

(4)调用HttpClient的execute()方法,该方法执行完之后会返回一个HttpResponse对象:

HttpResponse httpResponse = httpClient.execute(httpPost);

4、服务器所返回的所有信息都包含在HttpResponse对象里,通常情况下,我们都会先取出服务器返回的状态码,如果等于200就说明请求和响应都成功了;

if(httpResponse.getStatusLine().getStatusCode() == 200){

//请求和响应都成功了

}

5、在if判断的内部取出服务返回的具体内容:可以调用getEntity()方法获取到一个HttpEntity实例,然后再用EntityUtils.toString()这个静态方法将HttpEntity转换成字符串即可。

if(httpResponse.getStatusLine().getStatusCode()== 200){

//请求和响应都成功了

HttpEntity entity =httpResponse.getEntity();

String response =EntityUtils.toString(entity);

}

注意:如果服务器返回的数据是带有中文的,直接调用EntityUtils.toString()方法进行转换会有乱码的情况出现。这个时候,只需要在转换的时候将字符集指定成utf-8就可以了。

String response =EntityUtils.toString(entity,”utf-8”);



版权声明:本文为captainconnie原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。