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”);