文档章节

Java Http请求工具类

yuewawa
 yuewawa
发布于 09/24 21:36
字数 326
阅读 37
收藏 0
public static String httpPost(String source, String params) {
		URL url = null;
		HttpURLConnection conn = null;
		OutputStream os = null;
		String ret = null;
		try {
			url = new URL(source);
			conn = (HttpURLConnection) url.openConnection();
			addRequestHeader(conn);
			conn.setRequestMethod("POST");
			conn.setDoInput(true);
			conn.setDoOutput(true);
			conn.setUseCaches(false);
			conn.connect();
			if (params != null) {
				os = conn.getOutputStream();
				os.write(params.getBytes("UTF-8"));
				os.flush();
			}
			InputStream is = conn.getInputStream();
			ret = getResponse(is);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (os != null) {
				try {
					os.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if (conn != null) {
				conn.disconnect();
			}
		}
		return ret;
	}
	public static String httpGet(String source) {
		URL url = null;
		HttpURLConnection conn = null;
		String ret = null;
		try {
			url = new URL(source);
			conn = (HttpURLConnection) url.openConnection();
			addRequestHeader(conn);
			conn.setRequestMethod("GET");
			conn.setDoInput(true);
			conn.setUseCaches(false);
			conn.connect();
			InputStream is = conn.getInputStream();
			ret = getResponse(is);
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			if (conn != null) {
				conn.disconnect();
			}
		}
		return ret;
	}
	
	public static String getResponse(InputStream is) {
		GZIPInputStream gzip = null;
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		String ret = null;
		try {
			gzip = new GZIPInputStream(is);
			int len = 0;
			byte[] buffer = new byte[1024];
			while ((len = gzip.read(buffer)) != -1) {
				baos.write(buffer, 0, len);
			}
			baos.flush();
			ret = new String(baos.toByteArray(), "UTF-8");
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				if (baos != null) {
					baos.close();
				}
				if (gzip != null) {
					gzip.close();
				}
				if (is != null) {
					is.close();
				}
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
		return ret;
		
	}
	
	public static void addRequestHeader(HttpURLConnection conn) {
		conn.setRequestProperty("Accept", "text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8");
		conn.setRequestProperty("Accept-Charset", "utf-8, iso-8859-1;q=0.5");
		conn.setRequestProperty("Accept-Encoding", "gzip, deflate");
		conn.setRequestProperty("Accept-Language", "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2");
		conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0");
	}

 

© 著作权归作者所有

共有 人打赏支持
yuewawa
粉丝 4
博文 102
码字总数 17825
作品 0
南京
私信 提问
类加载器(ClassLoader)

“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到java虚拟机外部去实现,以便让引用程序自己决定如何去获取所需要的类。实现这个动作的代码模块被称为类加载器。 类加载器...

cookqq
2013/03/19
0
0
从java的类装载器看安全

jave是安全的,这体现在多个方面,其中之一就是java类的加载,而且java类的加载安全机制体现出来的是一种原则,就是保持信息的单向流动而不是 杂糅的双向依赖总是一件好事,因为首先这样做会...

晨曦之光
2012/04/10
99
1
Tomcat的组件及配置文件(一)

tomcat的组件: tomcat运行在JVM中,运行在JVM中之后,它会启动一个JVM实例,这个JVM实例称之为叫做tomcat server; 一个server就是运行在JVM中的一个实例,这个实例内部跑的是tomcat; conn...

长得丑死了
06/21
0
0
Profiler是唯一一款获过奖的Java剖析器

Profiler是唯一一款获过奖的Java剖析器。JProfiler直观的用户界面能够帮助你找到性能瓶颈,并指明你的内存漏洞和解决线程问题。 JProfiler's 特征: 内存剖析 JProfiler的内存视图部分可以提供...

baobiaokongjian
2014/04/24
0
0
关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享

1、原理简介: Fiddler 是目前最强大最好用的 Web 调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置 CGI 请求的断点,甚至修改输入输出数据。同类的工具还有h...

大数据之路
2013/08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

cmake 编译脚本

#!/bin/sh test -d build || mkdir -p build cd build cmake .. make

shzwork
8分钟前
0
0
数据表引擎

InnoDB表引擎 默认事务性引擎 数据存储在共享表空间,可以通过配置分开 对主键查询的性能高于其它引擎 从磁盘读取数据时自动在内存构建hash索引,插入数据时自动构建插入缓冲区 通过一些机制和...

关元
9分钟前
0
0
从零开始实现Vue简单的Toast插件

概述: 在前端项目中,有时会需要通知、提示一些信息给用户,尤其是在后台系统中,操作的正确与否,都需要给与用户一些信息。 1. 实例 在Vue组件的methods内,调用如下代码 `this``.$toast({...

前端小攻略
12分钟前
0
0
yaf和yaconf

pecl install yafpecl install yaconf [yaf] yaf.environ = dev yaf.use_spl_autoload = On yaf.use_namespace = 1 [yaconf] yaconf.directory = /data/wwwroot/yaconf......

果树啊
13分钟前
0
0
day01:shell基础(shell基础、alias及重定向)

1、shell基础介绍: shell是一个命令解释器,用于用户与机器的交互: 也支持特定的语法(逻辑判断,循环): 每个用户都有自己特定的shell:Centos7的shell是bash(bourne agin shell): shel...

芬野de博客
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部