具体步骤如下所示:
(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 ValueBasicNameValuePair以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的集合来添加参数。在给参数设置编码时,需要与服务器的解码格式保持一致性,否则会出现中文乱码的情况