文档章节

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

f
 flyqilong
发布于 2016/02/27 21:42
字数 844
阅读 33
收藏 0
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;
	}
}


© 著作权归作者所有

共有 人打赏支持
f
粉丝 3
博文 93
码字总数 53900
作品 0
Android工程师
HttpClient 设置了https和端口为443,但是tomcat还是没收到对应的请求

DEFAULT_PSF是一个免证书的protocol: private static final ProtocolSocketFactory DEFAULT_PSF = new ProtocolSocketFactory() { private SSLSocketFactory sslSocketFactory; private voi......

uglybaby
2015/11/18
1K
2
Java Spring Boot集成第三方登录 (QQ和微信)

QQ互联/微信开发者平台 通过认证,然后创建应用 获得你的APPID 和AppSecret 配置回调函数 微信QQ请求都是https的请求,这里需要一个工具类 HttpClientUtils.java 用来请求QQ或微信的接口,工具类...

冷风_f818
2017/11/30
0
0
iOS 多任务下载(支持离线)

iOS 多任务下载(支持离线) 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[+] 添加下载任务 @param netPath 下载地址*/ (void)addDownloadTast:(NSString *)netPath { } ...

wakice
2017/03/30
0
0
Android也架构之三:简单工厂模式优化网络请求

很悲催,我们在《Android也架构之二:单例模式访问网络》 用httpConnect的方式去访问网络,而且能够正常获取数据了,可是老板能,技术出生,他要求我重新用httpClient去获取获取网络数据,童...

理工男海哥
2012/08/21
0
0
Smart Framework 2.0 正式版发布!

除夕之夜,Smart Framework 2.0 终于与大家见面了!现在 Smart 的项目成功案例已经诞生了,大家不妨也去尝试一下吧。 2.0 版本最大的特色就是提供了许多常用的插件,它们分别是: Cache:基于...

黄勇
2014/01/30
3.9K
13

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
2
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部