`
hanyi366
  • 浏览: 289293 次
  • 性别: 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 请求方法用于将数据发送到服务器端,例如更新服务器端的资源...

    C#POST请求WCF服务

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

    nodejs实现HTTPS发起POST请求

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

    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. 基础概念 ...

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

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

    GET请求和POST请求详解.docx

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

    httpclient发送get请求和post请求demo

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

    (完整版)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