文档章节

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

f
 flyqilong
发布于 2016/02/27 21:42
字数 844
阅读 47
收藏 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工程师
私信 提问
Java Spring Boot集成第三方登录 (QQ和微信)

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

冷风_f818
2017/11/30
0
0
Android也架构之三:简单工厂模式优化网络请求

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

理工男海哥
2012/08/21
0
0
iOS 多任务下载(支持离线)

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

wakice
2017/03/30
0
0
springboot(十八):使用Spring Boot集成FastDFS

上篇文章介绍了如何使用Spring Boot上传文件,这篇文章我们介绍如何使用Spring Boot将文件上传到分布式文件系统FastDFS中。 这个项目会在上一个项目的基础上进行构建。 1、pom包配置 我们使用...

ityouknow
2018/10/28
0
0
GIS专业书籍、文档、数据、网站、工具等干货

整理、分享一些个人整理的GIS专业书籍、文档、数据、网站、工具等。也希望大家将自己的心得也分享出来,一起交流,共同进步。 如果下载链接失效,请到这里去:地信网 一、原理应用类 GIS基础...

gisweis
2015/02/27
0
0

没有更多内容

加载失败,请刷新页面

加载更多

solidity智能合约中tx.origin的正确使用场景

简介 tx.origin是Solidity的一个全局变量,它遍历整个调用栈并返回最初发送调用(或事务)的帐户的地址。在智能合约中使用此变量进行身份验证会使合约容易受到类似网络钓鱼的攻击。 但针对t...

程序新视界
17分钟前
0
0
代码详解:基于Python建立任意层数的深度神经网络

全文共6359字,预计学习时长20分钟或更长 图片来源:pexels.com/@divinetechygir 在这篇指南中,我们将建立起一个任意层数的深度神经网络。这个神经网络可以应用于二元分类的监督学习问题。 ...

读芯术
18分钟前
0
0
使用mybatis-plus-gennretor代码生成器生成代码

1导入需要的jar包 <dependencies> <!-- mp依赖 mybaits-plus 会自动维护mybaits jar包 所以不用加入了 防止版本冲突 --> <dependency> <groupId>com.ba......

小小小施爷
37分钟前
0
0
巨杉Tech | 微服务趋势下的数据库设计与应用简析

上周五(7月12日)巨杉数据库参与了由得到App主办八里庄技术沙龙活动,分享主题是关于分布式数据库架构与实战。 以下就是根据巨杉数据库现场分享的内容进行的分享实录整理。 巨杉数据库简介 ...

巨杉数据库
52分钟前
66
0
借助URLOS快速安装AliSQL

环境需求 最低硬件配置:1核CPU,1G内存(1+1)提示:如果你的应用较多,而主机节点的硬件配置较低,建议在部署节点时开通虚拟虚拟内存; 生产环境建议使用2G或以上内存; 推荐安装系统:Ubu...

躲猫猫_007
53分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部