使用HttpClient发送HTTP
HttpClient是Apache提供的HTTP网络访问接口,从一开始便被引入到了Android API中。可以完成和HttpURLConnection一样的效果
-
创建一个客户端对象,
HttpClient
是一个接口,通常情况下都会创建一个DefaultHttpClient
的实例HttpClient client = new DefaultHttpClient();
-
创建一条请求
- 创建一条
GET
请求-
创建一个
HttpGet
对象,并传入目标的网络地址HttpGet httpGet = new HttpGet("http://www.baidu.com");
-
- 创建一条
POST
请求-
创建一个
HttpPost
对象,并传入目标的网络地址HttpPost httpPost = new HttpPost("http://localhost:8080/web_1/LoginServlet");
-
通过一个
NameValuePair
集合来存放待提交的参数List<NameValuePair> nameValue = new ArrayList<NameValuePair>(); nameValue.add(new BasicNameValuePair("name", name)); nameValue.add(new BasicNameValuePair("pass", pass));
-
封装实体对象
UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(nameValue, "utf-8");
-
设置POST请求对象的实体
httpPost.setEntity(encodedFormEntity);
-
- 创建一条
-
发送请求,得到响应对象
HttpResponse httpResponse = client.execute(httpGet / httpPost);
-
判断响应吗是否为200
//相应对象将响应头和相应内容分别封装成了对象,需要先获取其对象 StatusLine line = httpResponse.getStatusLine(); if (line.getStatusCode() == 200) {}
-
获取响应内容
//获取响应对象中的实体对象 HttpEntity entity = httpResponse.getEntity(); //拿到从服务器返回的输入流 InputStream inputStream = entity.getContent(); /*或者*/ //将HttpEntity转换成字符串 String text = EntityUtils.toString(entity, "utf-8");