自己综合的一个常用下载和上传工具类:HttpClientUtils(18)

原创
2016/02/27 21:42
阅读数 1.3K
public class HttpClientUtils {
	/**
	 * 访问网络,将下载的数据存储到文件流中
	 * 
	 * @param url
	 *            :访问网络的url地址
	 * @return InputStream
	 */
	public static InputStream loadFileFromNet(String url) {
		HttpClient client = new DefaultHttpClient();
		HttpGet get = new HttpGet(url);
		try {
			HttpResponse response = client.execute(get);
			if (response.getStatusLine().getStatusCode() == 200) {
				HttpEntity entity = response.getEntity();
				return entity.getContent();
				// int len = -1;
				// byte[] buff = new byte[1024];
				// while ((len = bis.read(buff)) != -1) {
				// bos.write(buff, 0, len);
				// bos.close();
				// }
			}
		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return null;

	}

	/**
	 * 实现网络访问文件,将获取到的数据存在字节数组中
	 * 
	 * @param url
	 *            :访问网络的url地址
	 * @return byte[]
	 */
	public static byte[] loadByteFromNet(String url) {
		HttpClient client = new DefaultHttpClient();
		HttpGet get = new HttpGet(url);
		try {
			HttpResponse response = client.execute(get);
			if (response.getStatusLine().getStatusCode() == 200) {
				// HttpEntity httpEntity = response.getEntity();
				// return EntityUtils.toByteArray(httpEntity);
				return EntityUtils.toByteArray(response.getEntity());
			}

		} catch (ClientProtocolException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 作用:实现网络访问文件,返回字符串
	 * 
	 * @param url
	 *            :访问网络的url地址
	 * @return String
	 */
	public static String loadTextFromURL(String url) {
		HttpClient client = new DefaultHttpClient();
		HttpGet get = new HttpGet(url);
		try {
			HttpResponse response = client.execute(get);
			if (response.getStatusLine().getStatusCode() == 200) {
				return EntityUtils.toString(response.getEntity(), "UTF-8");
				// HttpEntity httpEntity = response.getEntity();
				// return EntityUtils.toString(httpEntity, "utf-8");
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 作用:实现网络访问文件,先给服务器通过“GET”方式提交数据,再返回相应的数据
	 * 
	 * @param url
	 *            :访问网络的url地址
	 * @param params
	 *            String url:访问url时,需要传递给服务器的参数。
	 *            第二个参数格式为:username=admin&password=123456
	 * @return byte[]
	 */
	public static byte[] doGetSubmit(String url, String params) {
		HttpClient httpClient = new DefaultHttpClient();
		HttpGet requestGet = new HttpGet(url + "?" + params);
		try {
			HttpResponse httpResponse = httpClient.execute(requestGet);
			if (httpResponse.getStatusLine().getStatusCode() == 200) {
				HttpEntity httpEntity = httpResponse.getEntity();
				return EntityUtils.toByteArray(httpEntity);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		/*
		 * try { URL url2 = new URL(url); HttpURLConnection connect =
		 * (HttpURLConnection) url2 .openConnection();
		 * connect.setRequestMethod("POST"); OutputStream os =
		 * connect.getOutputStream();
		 * os.write("username=admin&password=123456".getBytes());
		 * connect.setDoOutput(true);// 上传记得改为true,它默认为false
		 * ByteArrayOutputStream bos = new ByteArrayOutputStream(); if
		 * (connect.getResponseCode() == 200) { InputStream is =
		 * connect.getInputStream(); byte[] buff = new byte[1024]; int len = -1;
		 * while ((len = is.read(buff)) != -1) { bos.write(buff, 0, len);
		 * is.close(); } bos.close(); return bos.toByteArray(); } } catch
		 * (Exception e) { e.printStackTrace(); }
		 */
		return null;
	}

	/**
	 * 作用:实现网络访问文件,先给服务器通过“POST”方式提交数据,再返回相应的数据 使用HttpClient实现
	 * 
	 * @param url
	 *            :访问网络的url地址
	 * @param params
	 *            String url:访问url时,需要传递给服务器的参数。 第二个参数为:List<NameValuePair>
	 * @return byte[]
	 */
	public static byte[] doPostSubmit(String url, List<NameValuePair> params) {
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost requestPost = new HttpPost(url);
		try {
			requestPost.setEntity(new UrlEncodedFormEntity(params, "utf-8"));
			HttpResponse httpResponse = httpClient.execute(requestPost);
			if (httpResponse.getStatusLine().getStatusCode() == 200) {
				HttpEntity httpEntity = httpResponse.getEntity();
				return EntityUtils.toByteArray(httpEntity);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
		// HttpClient client = new DefaultHttpClient();
		// HttpPost post = new HttpPost(url);
		// try {
		// List<NameValuePair> parameters = new ArrayList<NameValuePair>();
		// NameValuePair parametersname = new BasicNameValuePair("username",
		// "admin");
		// NameValuePair parameterspwd = new BasicNameValuePair("password",
		// "123456");
		// parameters.add(parametersname);
		// parameters.add(parameterspwd);
		// HttpEntity entity = new UrlEncodedFormEntity(parameters);
		// post.setEntity(entity);
		// HttpResponse response = client.execute(post);
		// if (response.getStatusLine().getStatusCode() == 200) {
		// // InputStream is = response.getEntity().getContent();
		// return EntityUtils.toByteArray(response.getEntity());
		// }
		// } catch (Exception e) {
		// e.printStackTrace();
		// }
		// return null;
	}

	/**
	 * 作用:实现网络访问文件,先给服务器通过“POST”方式提交数据,再返回相应的数据 使用HttpClient实现
	 * 
	 * @param url
	 *            :访问网络的url地址
	 * @param params
	 *            String url:访问url时,需要传递给服务器的参数。 Map<String , Object>
	 * @return byte[]
	 */
	public static byte[] doPostSubmit(String url, Map<String, Object> params) {
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost requestPost = new HttpPost(url);

		List<BasicNameValuePair> parameters = new ArrayList<BasicNameValuePair>();
		try {
			if (params != null) {
				for (Map.Entry<String, Object> entry : params.entrySet()) {
					String key = entry.getKey();
					String value = entry.getValue().toString();
					BasicNameValuePair nameValuePair = new BasicNameValuePair(
							key, value);
					parameters.add(nameValuePair);
				}
			}
			requestPost
					.setEntity(new UrlEncodedFormEntity(parameters, "utf-8"));
			HttpResponse httpResponse = httpClient.execute(requestPost);

			if (httpResponse.getStatusLine().getStatusCode() == 200) {
				HttpEntity httpEntity = httpResponse.getEntity();
				return EntityUtils.toByteArray(httpEntity);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
		// try {
		// HttpClient client = new DefaultHttpClient();
		// HttpPost post = new HttpPost(url);
		// Map<String, Object> params1 = new HashMap<String, Object>();
		// String username = "admin";
		// String password = "123456";
		// params1.put("usernaem", username);
		// params1.put("password", password);
		//
		// post.setEntity((HttpEntity) params1.entrySet());
		// HttpResponse response = client.execute(post);
		// if (response.getStatusLine().getStatusCode() == 200) {
		// // InputStream is = response.getEntity().getContent();
		// return EntityUtils.toByteArray(response.getEntity());
		// }
		// } catch (Exception e) {
		// e.printStackTrace();
		// }
		// return null;
	}
}


展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
1
分享
返回顶部
顶部