Android基础笔记——HttpClient访问网络

来源:互联网 发布:爱淘宝和淘宝的区别 编辑:程序博客网 时间:2024/05/19 16:33

首先,HttpClient是一个接口,因此无法创建它的实例,通常情况下都会创建一个DefaultHttpClient的实例:

HttpClient httpClient = new DefaultHttpClient();


如果要发起一个GET请求,就可以创建一个HttpGet对象,并传入目标的网络地址,然后调用HttpGet的execut()方法即可:

HttpGet httpGet = new HttpGet("http://www.baidu.com");httpClient.execute(httpGet);

如果是一个POST请求,会比GET请求稍微复杂一点。

首先我们需要创建一个HttpPost对象,并传入目标的网络地址:

HttpPost httpPost = new HttpPost("http://www.baidu.com");
然后通过一个 NameValuePair集合来存放待提交的参数,并将这个参数集合传入到一个UrlEncodedFormEntity中,然后调用 HttpPost的 setEntity()方法将构建好的UrlEncodedFormEntity传入:

List<NameValuePair> params = new ArrayList<NameValuePair>();params.add(new BasicNameValuePair("username", "admin"));params.add(new BasicNameValuePair("password", "123456"));UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params, "utf-8");httpPost.setEntity(entity);
最后调用HttpClient 的 execute()方法,并将 HttpPost 对象传入即可:

httpClient.execute(httpPost);

通过GET或者POST方法给服务器发送请求完成之后,会获得服务器的反馈,得到一个HttpResponse对象,服务器返回的信息都包含在这里面。

通常情况下,我们会先获得服务器返回的状态码,如果等于200,说明请求和响应都成功:

if (httpResponse.getStatusLine().getStatusCode() == 200) {// 请求和响应都成功了}
接下来在这个 if判断的内部取出服务返回的具体内容,可以调用 getEntity()方法获取到一个 HttpEntity 实例, 然后再用 EntityUtils.toString()这个静态方法将 HttpEntity转换成字符串即可,如下所示:

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

0 0
原创粉丝点击