文档章节

Java Http请求工具类

yuewawa
 yuewawa
发布于 09/24 21:36
字数 326
阅读 20
收藏 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
博文 101
码字总数 17608
作品 0
南京
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
类加载器(ClassLoader)

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

cookqq
2013/03/19
0
0
关于 WEB/HTTP 调试利器 Fiddler 的一些技巧分享

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

大数据之路
2013/08/08
0
0
win7中java编程工具安装 java环境变量设置

win7中java编程工具安装 java环境变量设置 Question:编译是显示'javac'不是内部或外部命令,也不是可运行的程序或批处理文件 解决: 在【系统变量】里编辑javahome、classpath、path环境变量...

澜fish
2014/03/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

visualVm 中的 visual GC说明

visual GC 不是 visualVM 自带的,需要安装插件。 步聚:菜单栏 (Tools) - > plugins - > Avaiable Plugins 中就选择安装 Spaces: 各个分代的内存使用情况。 特别说明:风格有分灰色部分,...

Canaan_
昨天
1
0
学习设计模式——生成器模式

1. 认识生成器模式 1. 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 2. 组成: Builder:生成器接口,定义创建一个Product对象所需要的各个组件的操作,...

江左煤郎
昨天
0
0
C语言精要(第二章:基本数据类型)

2.1 C语言基本数据类型 在计算机术语中,把⼆进制数中的某⼀位数又称为⼀个⽐特(bit)。⽐特这个单位对于计算机⽽⾔,在度量上是最⼩的单位。除了⽐特之外,还有字节(byte)这个术语。⼀个...

ryanliue
昨天
0
0
实现下拉菜单多选框效果

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><li>工作意愿地:<%-- <c:forEach items="${list}" var="list"><input type="checkbox" value="${list......

lanjian28
昨天
1
0
scala的视图界定

在上一篇帧子的代码中,如果main函数中不是用字符串而是用数字则程序不能正常编译: class Pair[T <: Comparable[T]](val first:T,val second:T) //类型T必须要是Comparable接口的子类(即...

whoisliang
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部