码迷,mamicode.com
首页 > Web开发 > 详细

HttpClient网络访问

时间:2015-05-28 15:46:01      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

HttpClient网络访问:
( 一) 、 简介:
1、 Apache组织提供了HttpClient项目, 可以实现网络访问。 在Android中, 成功集成了HttpClient, 所以在Android中可以直接使用
HttpClient访问网络。
2、 与HttpURLConnection相比, HttpClient将前者中的输入、 输出流操作, 统一封装成HttpGet、 HttpPost、 HttpRequest类。
HttpClient: 网络连接对象;
HttpGet: 代表发送GET请求;
HttpPost: 代表发送POST请求;
HttpResponse: 代表处理服务器响应的对象。
HttpEntity对象: 该对象中包含了服务器所有的返回内容。
3、 使用步骤: ( 六部曲) 【 重点】
1. 创建HttpClient对象: 通过实例化DefaultHttpClient获得;
2. 创建HttpGet或HttpPost对象: 通过实例化 HttpGet或HttpPost 获得, 而构造方法的参数是urlstring( 即需要访问的网络url地址) 。
也可以通过调用setParams()方法来添加请求参数;
3. 调用HttpClient对象的execute()方法, 参数是刚才创建的 HttpGet或HttpPost对象 , 返回值是HttpResponse对象;
4. 通过response对象中的getStatusLine()方法和getStatusCode()方法获取服务器响应状态是否是200。
5. 调用 HttpResponse对象的getEntity()方法, 返回HttpEntity对象。 而该对象中包含了服务器所有的返回内容。
6. 借助EntityUtils的toString()方法或toByteArray()对 HttpEntity对象进行处理, 也可以通过IO流对 HttpEntity对象进行操作。

  1 封装HttpClientHelper工具类:
  2 public class HttpClientHelper {
  3 public static HttpClient checkNetwork(String url) {
  4 HttpClient httpClient = new DefaultHttpClient();
  5 HttpGet request = new HttpGet(url);
  6 HttpResponse httpResponse = null;
  7 try {
  8 httpResponse = httpClient.execute(request);
  9 if (httpResponse.getStatusLine().getStatusCode() == 200) {
 10 return httpClient;
 11 }}
 12 catch (ClientProtocolException e) {
 13 e.printStackTrace();
 14 } catch (IOException e) {
 15 e.printStackTrace();
 16 }r
 17 eturn null;
 18 } /
 19 **
 20 * 作用: 实现网络访问文件, 将获取到数据储存在文件流中
 21 **
 22 @param url
 23 * : 访问网络的url地址
 24 * @return inputstream
 25 */
 26 public static InputStream loadFileFromURL(String url) {
 27 HttpClient httpClient = new DefaultHttpClient();
 28 HttpGet requestGet = new HttpGet(url);
 29 HttpResponse httpResponse;
 30 try {
 31 httpResponse = httpClient.execute(requestGet);
 32 if (httpResponse.getStatusLine().getStatusCode() == 200) {
 33 HttpEntity entity = httpResponse.getEntity();
 34 return entity.getContent();
 35 }}
 36 catch (Exception e) {
 37 e.printStackTrace();
 38 }r
 39 eturn null;
 40 } /
 41 **
 42 * 作用: 实现网络访问文件, 将获取到的数据存在字节数组中
 43 * 作用: 实现网络访问文件, 将获取到的数据存在字节数组中
 44 **
 45 @param url
 46 * : 访问网络的url地址
 47 * @return byte[]
 48 */
 49 public static byte[] loadByteFromURL(String url) {
 50 HttpClient httpClient = new DefaultHttpClient();
 51 HttpGet requestGet = new HttpGet(url);
 52 try {
 53 HttpResponse httpResponse = httpClient.execute(requestGet);
 54 if (httpResponse.getStatusLine().getStatusCode() == 200) {
 55 HttpEntity httpEntity = httpResponse.getEntity();
 56 return EntityUtils.toByteArray(httpEntity);
 57 }}
 58 catch (Exception e) {
 59 e.printStackTrace();
 60 System.out.println("====>" + e.toString());
 61 }r
 62 eturn null;
 63 } /
 64 **
 65 * 作用: 实现网络访问文件, 返回字符串
 66 **
 67 @param url
 68 * : 访问网络的url地址
 69 * @return String
 70 */
 71 public static String loadTextFromURL(String url) {
 72 HttpClient httpClient = new DefaultHttpClient();
 73 HttpGet requestGet = new HttpGet(url);
 74 try {
 75 HttpResponse httpResponse = httpClient.execute(requestGet);
 76 if (httpResponse.getStatusLine().getStatusCode() == 200) {
 77 HttpEntity httpEntity = httpResponse.getEntity();
 78 return EntityUtils.toString(httpEntity, "utf-8");
 79 }}
 80 catch (Exception e) {
 81 e.printStackTrace();
 82 }r
 83 eturn null;
 84 } /
 85 **
 86 * 作用: 实现网络访问文件, 先给服务器通过“GET”方式提交数据, 再返回相应的数据
 87 **
 88 @param url
 89 * : 访问网络的url地址
 90 * @param params
 91 * String url: 访问url时, 需要传递给服务器的参数。
 92 * 第二个参数格式为: username=wangxiangjun&password=123456
 93 * @return byte[]
 94 */
 95 public static byte[] doGetSubmit(String url, String params) {
 96 HttpClient httpClient = new DefaultHttpClient();
 97 HttpGet requestGet = new HttpGet(url + "?" + params);
 98 try {
 99 HttpResponse httpResponse = httpClient.execute(requestGet);
100 if (httpResponse.getStatusLine().getStatusCode() == 200) {
101 HttpEntity httpEntity = httpResponse.getEntity();
102 return EntityUtils.toByteArray(httpEntity);
103 }}
104 catch (Exception e) {
105 e.printStackTrace();
106 }r
107 eturn null;
108 } /
109 **
110 * 作用: 实现网络访问文件, 先给服务器通过“POST”方式提交数据, 再返回相应的数据
111 **
112 @param url
113 * : 访问网络的url地址
114 * @param params
115 * String url: 访问url时, 需要传递给服务器的参数。 第二个参数为: List<NameValuePair>
116 * @return byte[]
117 */
118 public static byte[] doPostSubmit(String url, List<NameValuePair> params) {
119 HttpClient httpClient = new DefaultHttpClient();
120 HttpPost requestPost = new HttpPost(url);
121 try {
122 requestPost.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
123 HttpResponse httpResponse = httpClient.execute(requestPost);
124 if (httpResponse.getStatusLine().getStatusCode() == 200) {
125 HttpEntity httpEntity = httpResponse.getEntity();
126 return EntityUtils.toByteArray(httpEntity);
127 }}
128 catch (Exception e) {
129 e.printStackTrace();
130 }r
131 eturn null;
132 } /
133 **
134 * 作用: 实现网络访问文件, 先给服务器通过“POST”方式提交数据, 再返回相应的数据
135 **
136 @param url
137 * : 访问网络的url地址
138 * @param params
139 * String url: 访问url时, 需要传递给服务器的参数。 Map<String , Object>
140 * @return byte[]
141 */
142 public static byte[] doPostSubmit(String url, Map<String, Object> params) {
143 HttpClient httpClient = new DefaultHttpClient();
144 HttpPost requestPost = new HttpPost(url);
145 List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
146 try {
147 if (params != null) {
148 for (Map.Entry<String, Object> entry : params.entrySet()) {
149 String key = entry.getKey();
150 String value = entry.getValue().toString();
151 BasicNameValuePair nameValuePair = new BasicNameValuePair(
152 key, value);
153 parameters.add(nameValuePair);
154 }}r
155 equestPost
156 .setEntity(new UrlEncodedFormEntity(parameters, "utf-8"));
157 HttpResponse httpResponse = httpClient.execute(requestPost);
158 if (httpResponse.getStatusLine().getStatusCode() == 200) {
159 HttpEntity httpEntity = httpResponse.getEntity();
160 return EntityUtils.toByteArray(httpEntity);
161 }}
162 catch (Exception e) {
163 e.printStackTrace();
164 }r
165 eturn null;
166 }}

 

HttpClient网络访问

标签:

原文地址:http://www.cnblogs.com/tjmyhx/p/4535864.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!