package com.clouds.util;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.log4j.Logger;
public class HttpRequestProxy {
/**
* 连接超时
*/
private static int connectTimeOut = 5000;
/**
* 读取数据超时
*/
private static int readTimeOut = 10000;
/**
* 请求编码
*/
private static String requestEncoding = "GBK";
private static Logger logger = Logger.getLogger(HttpRequestProxy.class);
/**
* @return 连接超时(毫秒)
* @see com.hengpeng.common.web.HttpRequestProxy#connectTimeOut
*/
public static int getConnectTimeOut() {
return HttpRequestProxy.connectTimeOut;
}
/**
* @return 读取数据超时(毫秒)
* @see com.hengpeng.common.web.HttpRequestProxy#readTimeOut
*/
public static int getReadTimeOut() {
return HttpRequestProxy.readTimeOut;
}
/**
* @return 请求编码
* @see com.hengpeng.common.web.HttpRequestProxy#requestEncoding
*/
public static String getRequestEncoding() {
return requestEncoding;
}
/**
* @param connectTimeOut 连接超时(毫秒)
* @see com.hengpeng.common.web.HttpRequestProxy#connectTimeOut
*/
public static void setConnectTimeOut(int connectTimeOut) {
HttpRequestProxy.connectTimeOut = connectTimeOut;
}
/**
* @param readTimeOut 读取数据超时(毫秒)
* @see com.hengpeng.common.web.HttpRequestProxy#readTimeOut
*/
public static void setReadTimeOut(int readTimeOut) {
HttpRequestProxy.readTimeOut = readTimeOut;
}
/**
* @param requestEncoding 请求编码
* @see com.hengpeng.common.web.HttpRequestProxy#requestEncoding
*/
public static void setRequestEncoding(String requestEncoding) {
HttpRequestProxy.requestEncoding = requestEncoding;
}
/**
* <pre>
* 发送带参数的GET的HTTP请求
* </pre>
*
* @param reqUrl HTTP请求URL
* @param parameters 参数映射表
* @return HTTP响应的字符串
*/
public static String doGet(String reqUrl, Map<?, ?> parameters, String recvEncoding) {
HttpURLConnection url_con = null;
String responseContent = null;
try {
StringBuffer params = new StringBuffer();
for (Iterator<?> iter = parameters.entrySet().iterator(); iter.hasNext();) {
Entry<?, ?> element = (Entry<?, ?>) iter.next();
params.append(element.getKey().toString());
params.append("=");
params.append(URLEncoder.encode(element.getValue().toString(), HttpRequestProxy.requestEncoding));
params.append("&");
}
if (params.length() > 0) {
params = params.deleteCharAt(params.length() - 1);
}
URL url = new URL(reqUrl);
url_con = (HttpURLConnection) url.openConnection();
url_con.setRequestMethod("GET");
System.setProperty("sun.net.client.defaultConnectTimeout", String.valueOf(HttpRequestProxy.connectTimeOut));// (单位:毫秒)jdk1.4换成这个,连接超时
System.setProperty("sun.net.client.defaultReadTimeout", String.valueOf(HttpRequestProxy.readTimeOut)); // (单位:毫秒)jdk1.4换成这个,读操作超时
// url_con.setConnectTimeout(5000);//(单位:毫秒)jdk
// 1.5换成这个,连接超时
// url_con.setReadTimeout(5000);//(单位:毫秒)jdk 1.5换成这个,读操作超时
url_con.setDoOutput(true);
byte[] b = params.toString().getBytes();
url_con.getOutputStream().write(b, 0, b.length);
url_con.getOutputStream().flush();
url_con.getOutputStream().close();
InputStream in = url_con.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(in, recvEncoding));
String tempLine = rd.readLine();
StringBuffer temp = new StringBuffer();
String crlf = System.getProperty("line.separator");
while (tempLine != null) {
temp.append(tempLine);
temp.append(crlf);
tempLine = rd.readLine();
}
responseContent = temp.toString();
rd.close();
in.close();
}
catch (IOException e) {
logger.error("网络故障", e);
}
finally {
if (url_con != null) {
url_con.disconnect();
}
}
return responseContent;
}
/**
* <pre>
* 发送不带参数的GET的HTTP请求
* </pre>
*
* @param reqUrl HTTP请求URL
* @return HTTP响应的字符串
*/
public static String doGet(String reqUrl, String recvEncoding) {
HttpURLConnection url_con = null;
String responseContent = null;
try {
StringBuffer params = new StringBuffer();
String queryUrl = reqUrl;
int paramIndex = reqUrl.indexOf("?");
if (paramIndex > 0) {
queryUrl = reqUrl.substring(0, paramIndex);
String parameters = reqUrl.substring(paramIndex + 1, reqUrl.length());
String[] paramArray = parameters.split("&");
for (int i = 0; i < paramArray.length; i++) {
String string = paramArray[i];
int index = string.indexOf("=");
if (index > 0) {
String parameter = string.substring(0, index);
String value = string.substring(index + 1, string.length());
params.append(parameter);
params.append("=");
params.append(URLEncoder.encode(value, HttpRequestProxy.requestEncoding));
params.append("&");
}
}
params = params.deleteCharAt(params.length() - 1);
}
URL url = new URL(queryUrl);
url_con = (HttpURLConnection) url.openConnection();
url_con.setRequestMethod("GET");
System.setProperty("sun.net.client.defaultConnectTimeout", String.valueOf(HttpRequestProxy.connectTimeOut));// (单位:毫秒)jdk1.4换成这个,连接超时
System.setProperty("sun.net.client.defaultReadTimeout", String.valueOf(HttpRequestProxy.readTimeOut)); // (单位:毫秒)jdk1.4换成这个,读操作超时
// url_con.setConnectTimeout(5000);//(单位:毫秒)jdk
// 1.5换成这个,连接超时
// url_con.setReadTimeout(5000);//(单位:毫秒)jdk 1.5换成这个,读操作超时
url_con.setDoOutput(true);
byte[] b = params.toString().getBytes();
url_con.getOutputStream().write(b, 0, b.length);
url_con.getOutputStream().flush();
url_con.getOutputStream().close();
InputStream in = url_con.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(in, recvEncoding));
String tempLine = rd.readLine();
StringBuffer temp = new StringBuffer();
String crlf = System.getProperty("line.separator");
while (tempLine != null) {
temp.append(tempLine);
temp.append(crlf);
tempLine = rd.readLine();
}
responseContent = temp.toString();
rd.close();
in.close();
}
catch (IOException e) {
logger.error("网络故障", e);
}
finally {
if (url_con != null) {
url_con.disconnect();
}
}
return responseContent;
}
/**
* <pre>
* 发送带参数的POST的HTTP请求
* </pre>
*
* @param reqUrl HTTP请求URL
* @param parameters 参数映射表
* @return HTTP响应的字符串
*/
public static String doPost(String reqUrl, Map<String, String> parameters, String recvEncoding) {
HttpURLConnection url_con = null;
String responseContent = null;
try {
StringBuffer params = new StringBuffer();
for (Iterator<?> iter = parameters.entrySet().iterator(); iter.hasNext();) {
Entry<?, ?> element = (Entry<?, ?>) iter.next();
params.append(element.getKey().toString());
params.append("=");
params.append(URLEncoder.encode(element.getValue().toString(), HttpRequestProxy.requestEncoding));
params.append("&");
}
if (params.length() > 0) {
params = params.deleteCharAt(params.length() - 1);
}
URL url = new URL(reqUrl);
url_con = (HttpURLConnection) url.openConnection();
url_con.setRequestMethod("POST");
System.setProperty("sun.net.client.defaultConnectTimeout", String.valueOf(HttpRequestProxy.connectTimeOut));// (单位:毫秒)jdk1.4换成这个,连接超时
System.setProperty("sun.net.client.defaultReadTimeout", String.valueOf(HttpRequestProxy.readTimeOut)); // (单位:毫秒)jdk1.4换成这个,读操作超时
// url_con.setConnectTimeout(5000);//(单位:毫秒)jdk
// 1.5换成这个,连接超时
// url_con.setReadTimeout(5000);//(单位:毫秒)jdk 1.5换成这个,读操作超时
url_con.setDoOutput(true);
byte[] b = params.toString().getBytes();
url_con.getOutputStream().write(b, 0, b.length);
url_con.getOutputStream().flush();
url_con.getOutputStream().close();
InputStream in = url_con.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(in, recvEncoding));
String tempLine = rd.readLine();
StringBuffer tempStr = new StringBuffer();
String crlf = System.getProperty("line.separator");
while (tempLine != null) {
tempStr.append(tempLine);
tempStr.append(crlf);
tempLine = rd.readLine();
}
responseContent = tempStr.toString();
rd.close();
in.close();
}
catch (IOException e) {
logger.error("网络故障", e);
}
finally {
if (url_con != null) {
url_con.disconnect();
}
}
return responseContent;
}
public static void main(String[] args) {
Map<String, String> map = new HashMap<String, String>();
map.put("data","a:3:{s:4:%22spec%22;a:2:{s:1:%228%22;s:2:%2243%22;s:2:%2211%22;s:9:%22%E6%B5%85%E8%93%9D%E8%89%B2%22;}s:13:%22spec_value_id%22;a:2:{s:1:%228%22;s:3:%22119%22;s:2:%2211%22;s:3:%22144%22;}s:21:%22spec_private_value_id%22;a:2:{s:1:%228%22;s:11:%2287175758783%22;s:2:%2211%22;s:11:%2287175758784%22;}}");
String temp = HttpRequestProxy.doPost("http://demo2.test.com/api/unserialize.php", map, "utf-8");
System.out.println("返回的消息是:" + temp);
}
}
分享到:
相关推荐
javahttp的简单使用。javaHttp的get与post自带api简单实现。java get post的使用记录
这个接口在java.net包下,是处理HTTP请求的基础类,包括发送GET、POST等请求,以及文件上传功能。在本文中,我们将深入探讨如何使用HttpURLConnection实现文件上传,同时也会涉及普通参数的传递。 首先,我们需要...
GET用于获取资源,而POST则用于向服务器发送数据,通常用于提交表单或创建新资源。 **1. Android HTTP GET请求** GET请求通常用于从服务器获取数据。在Android中,我们可以使用HttpURLConnection或者第三方库如...
在Android开发过程中,网络请求是不可或缺的一部分,而`HttpClient`是一个强大的HTTP客户端库,它允许开发者执行各种HTTP操作,如GET、POST、PUT和DELETE。本篇文章将详细讲解如何使用`HttpClient`工具类来简化这些...
JDK(Java Development Kit)自带的`java.net`包提供了基础的HTTP支持,包括发送GET和POST请求。这里我们将详细讲解如何使用Java发送HTTP请求,并获取响应内容。 首先,我们需要创建一个用于封装HTTP请求逻辑的类,...
它利用HTTP方法(如GET、POST、PUT等)来定义资源的操作,更适合现代Web应用的需求。 #### 实现工具:Apache CXF 在实际开发过程中,Apache CXF是常用的实现JAVA WebService的工具之一。CXF的核心组件是`org....
HttpClient是Apache提供的一款强大的HTTP客户端库,支持多种HTTP协议版本和功能,包括GET、POST请求、Cookie管理、重定向处理等。在远程接口调用中,HttpClient允许我们构建自定义的请求并获取响应,非常适用于API...
1. **使用HttpURLConnection**:这是Java标准库自带的方法,适用于基础的HTTP请求。你可以创建一个URL对象,然后通过openConnection()方法获取HttpURLConnection实例,设置请求方法和头部信息,最后读取响应数据。...
1. **使用HttpURLConnection**:Java标准库自带的HttpURLConnection可以用来发送GET和POST请求。对于自动登录,我们需要发送POST请求,携带用户名和密码。例如: ```java URL url = new URL(...
3. **网络请求库**:Java有许多库用于发送HTTP请求,如`HttpURLConnection`(Java自带)、Apache HttpClient和OkHttp。这些库提供了发送GET、POST等请求的方法,以及处理响应的功能。 4. **HTML解析**:爬虫抓取到...
这些API遵循统一的URI结构,使用HTTP动词(GET、POST、PUT、DELETE)来表示对资源的操作。 5. **安全机制**:对于任何购物系统来说,安全性都是至关重要的。Java迷你青春购物系统可能采用了Spring Security或者...
**POST 和 GET 区别** - **GET**:主要用于获取数据,数据会被附加在URL后面,安全性较低,不适合传递敏感信息;GET请求长度有限制。 - **POST**:主要用于发送数据,数据放在HTTP消息的正文中,没有数据量限制,...
4. **利用Tomcat自带的JSP文件**:由于帆软报表系统通常部署在Apache Tomcat服务器上,攻击者可以利用Tomcat默认存在的JSP文件(例如`/tomcat-7.0.96/webapps/ROOT/index.jsp`)作为切入点,通过覆盖这些文件来植入...
- POST:用于提交数据,通常用于创建新资源,数据在请求体中。 - PUT:用于更新已有资源。 - DELETE:用于删除资源。 3. 实现方式: - Android SDK自带的HttpURLConnection:基础网络请求库,但使用较为繁琐,...
java做的http测试小工具,支持post、put、get方法发送数据,自带base64编码以及解码,支持返回内容下载或base64解码保存为文件,支持base64编码类型选择,http请求编码类型选择以及超时时间设置 该软件必须在 64位...
它支持各种HTTP方法(GET, POST, PUT, DELETE等),并且被广泛应用于开发轻量级Web服务。JAX-RS提供了一套注解,使开发者能够以声明性的方式将资源类映射到HTTP请求和响应。JAX-RS规范的API位于javax.ws.rs.*包中,...
这些API应遵循HTTP协议,如GET用于获取数据,POST用于创建新资源,PUT用于更新资源,DELETE用于删除资源。 6. **模板引擎**:在处理视图时,可以使用模板引擎如Thymeleaf或FreeMarker,它们允许将动态数据嵌入到...
自己写的基于Java自带URL请求 处理get,post 不明白的,里面直接运行可以跑,
android 当中涉及到网络编程的部分经常会用到http通信,同时android也为我么您...前面提到的HttpUrlConnection接口是java当中的通信接口,而HttpClient则是java当中自带的通信接口。这个demo就实现了这四种通信方式。