`
hanyi366
  • 浏览: 290450 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HttpRequestProxy 请求代理 post方法

    博客分类:
  • Java
 
阅读更多

 写道
* *

*

* Title: HttpRequestProxy.java

* Project: HP - Common

* Type: com.hengpeng.common.web.HttpRequestProxy

* Author: benl

* Create: 2007-7-3 ????3: 07: 07

* Copyright: Copyright(c)2007

* Company:

*

* /

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; /** * <pre> * HTTP请求代理类 *
</pre> * * @author benl * @version 1.0, 2007-7-3 */public
class HttpRequestProxy
{
/** * 连接超时 */private static int connectTimeOut = 5000; /**
* 读取数据超时 */private static
int readTimeOut = 10000;
/**
*
请求编码 */private static
String requestEncoding = "
GBK & quot;
;
private static Logger logger = Logger.getLogger(HttpRequestProxy.class);
/** * <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(" & amp; & quot;);
}
if (params.length() & gt; 0)
{
params = params.deleteCharAt(params.length() - 1);
}
URL url = new URL(reqUrl);
url_con = (HttpURLConnection)url.openConnection();
url_con.setRequestMethod(" GET & quot;);
System.setProperty(" sun.net.client.defaultConnectTimeout &
quot; , 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 & gt; 0)
{
queryUrl = reqUrl.substring(0, paramIndex);
String parameters = reqUrl.substring(paramIndex + 1, reqUrl
.length());
String[] paramArray = parameters.split("&");
for (int i = 0; i & lt; paramArray.length; i++)
{
String string = paramArray[i];
int index = string.indexOf("=");
if (index & gt; 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 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() & gt; 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;
} /** * @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;
}
public static void main(String[] args)
{
Map map = new HashMap();
map.put("actionType", "1");
// map.put("issueId", "33");
String temp = HttpRequestProxy.doPost(
"http://192.168.0.99/AgentPortal/autoHandler", map, "GBK");
System.out.println("返回的消息是:" + temp);
}
}
 
分享到:
评论

相关推荐

    java中main方法发送httpPost请求

    因为我们是发送POST请求,所以需要设置请求方法为POST: ```java connection.setRequestMethod("POST"); ``` 3. **设置请求属性** 通常,POST请求需要设置Content-Type,表明我们要发送的数据类型: ```...

    C# 后台请求接口的方法(GET,POST)

    根据给定的文件信息,我们可以总结出以下关于C#后台请求接口的方法(GET, POST)的知识点: ### C#后台请求接口方法概述 在Web开发过程中,前后端之间的数据交互非常关键,通常会使用HTTP协议中的GET和POST两种...

    Qt 写的http 请求使用POST Json

    在本项目中,"Qt 写的http 请求使用POST Json" 提供了一个使用Qt库实现HTTP POST请求的方法,用于向服务器发送JSON格式的数据。下面我们将深入探讨这个主题。 首先,我们来了解Qt中的网络编程。Qt提供了...

    winform GET请求和POST请求

    在Windows Forms(Winform)应用开发中,GET和POST是两种常见的HTTP请求方法,用于从服务器获取或向服务器发送数据。这两个概念对于任何与Web交互的客户端程序设计都是至关重要的,尤其是在使用C#进行Winform编程时...

    api实现http请求,支持post和get方法

    本主题聚焦于如何利用API实现HTTP请求,特别是支持POST和GET这两种最常见的HTTP方法。在Delphi 6这样的集成开发环境中,开发者经常需要与网络进行交互,获取或发送数据,而WinINet API库则为此提供了便利。 Delphi ...

    Http post请求工具 POSTMAN工具post man请求必备

    POSTMAN是一款广泛使用的HTTP客户端工具,它允许开发者和测试人员进行HTTP请求,包括POST、GET、PUT等多种HTTP方法。在Web开发中,POSTMAN扮演着重要角色,它简化了API接口测试、调试和文档编制的过程。 一、POST...

    post_get_put等请求方法的区别

    * POST 请求方法不是幂等的,即多次请求可能会改变服务器端的状态。 * POST 请求方法通常用于提交表单数据、上传文件或创建新资源。 PUT 请求方法 PUT 请求方法用于将数据发送到服务器端,例如更新服务器端的资源...

    httpclient发送get请求和post请求demo

    本文将深入探讨如何使用HttpClient进行GET和POST请求,并提供相关的代码示例。 首先,GET请求是最常见的HTTP请求类型,通常用于获取资源。在HttpClient中,发送GET请求可以通过`HttpGet`类实现。以下是一个简单的...

    nodejs实现HTTPS发起POST请求

    Node.js实现HTTPS发起POST请求的知识点涉及多个方面,包括Node.js基础、HTTPS协议、HTTP POST请求以及Node.js内置模块的使用方法。 首先,Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用...

    C#POST请求WCF服务

    要实现C#中的POST请求,你需要创建一个客户端代理类来代表WCF服务。这可以通过使用`svcutil.exe`工具或者在Visual Studio中添加服务引用来完成。生成的代理类会包含方法,这些方法可以直接调用来调用服务的操作。 1...

    C#Post带参数请求+WebService接口.zip

    当需要向服务器发送带有数据的请求时,POST方法通常比GET更合适,因为它可以处理更大的数据量且数据不会显示在URL中。在C#中,我们可以使用HttpClient类来实现POST请求。以下是一个基本的POST请求步骤: - 创建...

    https发送post请求

    8. **执行请求并获取响应**:调用`execute()`方法发送POST请求并接收响应。 9. **处理响应内容**:通过响应实体获取输入流,从而读取服务器返回的数据。 10. **关闭资源**:确保所有打开的连接和资源都被正确关闭,...

    POST方法发送payload形式的请求1

    3. **发送POST请求**:最后,使用requests库的`post()`方法发送POST请求,将payload作为"data"参数传递: ```python import requests url = "http://example.com/api" headers = {"Content-Type": "application...

    .net post请求方法

    ### .NET POST 请求方法详解 在本篇文章中,我们将深入探讨如何使用.NET Framework来发起一个POST请求,并解析响应数据。示例代码展示了如何构建HTTP请求、设置必要的头部信息以及发送请求体。 #### 1. 基础概念 ...

    GET请求和POST请求详解.docx

    可以通过以下方法判断当前请求是GET请求还是POST请求: * 在浏览器地址栏上直接编写URL提交的请求一定是GET请求。 * 使用热链接向服务器发送的请求一定是GET请求。 * 使用form表单提交数据的时候,如果method属性...

    (完整版)JAVA利用HttpClient进行POST请求(HTTPS).doc

    在发送POST请求时,我们需要指定请求的URL、请求头和请求体。在示例代码中,我们使用HttpGet对象来发送POST请求,并指定请求的URL、请求头和请求体。 使用HttpClient发送POST请求可以帮助我们与HTTPS服务器进行交互...

    模拟GET/POST方法发送HTTP请求

    POST方法则用于向服务器提交数据,如表单填写内容,这些数据被包含在请求体中,不显示在URL上。 WinSock,全称为Windows Sockets,是Windows操作系统提供的API,用于实现TCP/IP协议栈的应用程序编程接口。使用...

    HttpClient发送http请求(post和get)需要的jar包+内符java代码案例+注解详解

    常见的请求方法有GET和POST。 - **GET请求**:是最简单的HTTP请求方式,用于从服务器获取资源。它将参数附加在URL后面,不安全且有限制(通常2KB左右),适用于获取少量数据。 - **POST请求**:用于向服务器...

    window.open方法post请求

    使用window.open()方法发送post请求

    无参数的post请求

    在上面的例子中,`post`方法没有设置请求体,这意味着它是一个真正的无参数POST请求。 #### 五、应用场景 无参数POST请求的应用场景相对较少,但在某些特定情况下仍然有用武之地: 1. **测试目的**:在进行集成...

Global site tag (gtag.js) - Google Analytics