具体步骤如下所示:
(1)创建HttpClient对象。
(2)指定访问网络的方式,创建一个HttpPost对象或者HttpGet对象。
(3)如果需要发送请求参数,可以调用HttpGet,HttpPost都具有的setParams()方法。对于HttpPost对象而言,也可调用setEntity()方法来设置请求参数。
(4)调用HttpClient对象的execute()方法访问网络,并获取HttpResponse对象
(5)调用HttpResponse.getEntity()方法获取HttpEntity的实例对象,该对象包装了服务器的响应内容,也就是所请求的数据。
在使用HttpClient访问网络时需要用到的几个常用类如下
HttpClient常用类介绍表
常用类名称 | 功能描述 |
HttpClient | 请求网络的接口 |
DefaultHttpClient | 实现了HttpClient接口的类 |
HttpGet | 使用GET方式请求必须创建该类实例 |
HttpPost | 使用POST方式请求必须创建该类实例 |
nameValuePair | 关联参数的Key Value |
BasicNameValuePair | 以Key Value的形式存放参数的类 |
UrlEncodeedFormEntity | 将提交给服务器参数进行编码的类 |
HttpResponse | 封装了服务器返回信息的类(包含头信息) |
HttpEntity | 封装了服务返回数据的类 |
上表中介绍了HttpClient几个常用类及他们的作用,下面通过一段示列代码可以更好的理解如何使用HttpClient访问网络和这些类在访问网络时的用法
如下:
//获取到HttpClient对象
HttpClient client=new DefaultHttpClient(); 第一步
HttpPost httpPost=new HttpPost("http://www.baidu.com"); 第二步
List<NameValuePair> params=new ArraryList<NameValuePair>();
//创建一个NameValuePair集合,用于添加参数
params.add(new BasicNameValuePair("username","admin"));
给参数设置编码
UrlEncodedFormEntity entity=new UrlEncodedFormEntity(params,"utf-8");
//设置参数(请求参数)
httpPost.setEntity(entity); 第三步
//获取HttpResponse对象
HttpResponse httpResponse=client.execute(httpPost); 第四步
//获取状态码
int statusCode=httpResponse.getStatusLine().getStatusCode();
if(statusCode==200){ //访问成功
//获取HttpEntity的实例
HttpEntity httpEntity=httpResponse.getEntity(); 第五步
//设置编码格式
String response=EntityUtils.toString(httpEntity,"utf-8");
}
上述代码演示了如何使用HttpClient访问服务器并获取返回的数据。需要注意的是, 使用POST方式设置参数时,需要创建一个NameValuePair的集合来添加参数。在给参数设置编码时,需要与服务器的解码格式保持一致性,否则会出现中文乱码的情况