`
ccbobocat
  • 浏览: 20162 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

[转载]java中用URLConnection 类post方式提交表单

阅读更多
*  * 

 * 

 * 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);
    }
}

文章来源:http://blog.163.com/ccbobo_cat/blog/static/320994622009616102329953

分享到:
评论

相关推荐

    java中用URLConnection_类post方式提交表单

    java中用URLConnection类post方式提交表单是指在java应用程序中使用java.net.URLConnection类来实现POST方式的表单提交。POST方式是HTTP协议中的一种常见的请求方法,它允许客户端向服务器发送数据。下面是使用...

    java中用URLConnection类post方式提交表单.pdf

    Java 中使用 URLConnection 类 POST 方式提交表单 Java 中使用 URLConnection 类 POST 方式提交表单是 Java 语言中的一种常用技术,用于实现 HTTP 请求代理。下面我们将详细介绍该技术的实现细节。 首先,我们需要...

    java URL URLConnection

    在Java编程语言中,`URL`(统一资源定位符)和`URLConnection`是网络编程中的核心类,用于访问和交互互联网上的资源。这篇博客文章可能深入解析了这两个类的使用和内部工作原理。 `URL`类是Java.net包中的一个关键...

    通过java.net.URLConnection发送HTTP请求

    在Java编程中,`java.net.URLConnection`是用于与各种Internet协议进行通信的抽象类,而HTTP(超文本传输协议)是最常见的应用之一。本文将深入探讨如何利用URLConnection类发送HTTP请求,理解其工作原理,并提供...

    java中URL以及URLConnection类的使用

    在Java中进行网络编程时,经常会用到URL和URLConnection这两个类。它们位于***包中,是Java网络编程的核心组件。下面就详细介绍这两个类的使用方法和相关知识点。 ### URL类 URL类是统一资源定位符(Uniform ...

    java URLConnection全面解析(通俗易懂,包括cookie操作和上传文件)

    ### Java URLConnection全面解析 #### 一、简介与准备工作 `URLConnection` 是Java标准库中的一个接口,位于`java.net`包下,用于抽象出网络连接。通过`URLConnection`,开发者能够实现对HTTP请求的基本控制,例如...

    基于java URL和URLConnection(详解)

    Java URL和URLConnection是Java语言中两个非常重要的类,它们都是java.net包下的类,分别用于处理URL地址和连接URL请求。这两个类都是Java网络编程中非常重要的组成部分,掌握它们的使用方法对Java开发者来说非常...

    java URLConnection总结(经典易懂)

    Java URLConnection 是Java标准库中用于与网络资源建立连接的类,它允许程序与服务器进行交互,例如发送HTTP请求并接收响应。以下是对Java URLConnection的详细总结: 1. **请求类别**: - **GET**:最常见的HTTP...

    java http post client server

    POST方法用于向服务器提交数据,常用于表单提交或发送JSON数据。在Java中,我们通常会把数据序列化成字符串,然后通过`setDoOutput`和`DataOutputStream`写入到连接中。 在实际开发中,为了提高代码的可读性和可...

    java如何利用java.net.URLConnection发送HTTP.docx

    `java.net.URLConnection`是Java标准库提供的一种基础网络连接类,可以用来处理各种类型的网络连接,包括HTTP。以下是如何利用`java.net.URLConnection`发送HTTP请求的详细步骤: 1. **创建URL对象**: 首先,你...

    URLConnection进行网络编程

    在Android开发中,`URLConnection`是Java标准库提供的一个基础网络通信组件,它允许应用程序通过打开到指定URL的连接来读取和写入数据。在本文中,我们将深入探讨如何使用`URLConnection`进行网络编程,并结合提供的...

    java URLConnection全面总结(包括cookie的详细操作).docx

    POST请求常用于向服务器提交数据,例如表单数据。使用`setDoOutput(true)`方法开启POST功能,并设置`Content-Type`头来指定数据格式: ```java connection.setDoOutput(true); connection.setRequestProperty(...

    java post文件流的操作

    在Java中,通过`HttpURLConnection`类可以轻松地实现POST请求,用于发送和接收文件流。该方法主要涉及到以下几个步骤: - **创建URL对象**:首先需要根据指定的URL地址创建一个`URL`对象。 - **设置HTTP连接属性**...

    Android使用URLConnection提交请求的实现

    本文将详细介绍如何在Android应用中使用`URLConnection`来提交HTTP请求,包括GET和POST两种常见方式。 首先,我们需要理解`URLConnection`的基本用法。`URLConnection`是所有URL连接的抽象基类,通过`URL`对象的`...

    URL以及URLConnection的使用

    理解URL的各个组成部分后,我们可以通过`openConnection()`方法获取到与该URL对应的URLConnection对象,它是`java.net.URLConnection`类的实例。URLConnection是Java中连接网络资源的基础,它可以用于读取、写入或...

    客户端页面截取!URLCONNECTION

    首先,URLConnection是java.net包中的一个抽象类,它是所有HTTP连接的基类,包括HTTP、HTTPS等多种协议。它提供了对URL的基本操作,如打开连接、发送请求、接收响应等。利用URLConnection,我们可以手动构建HTTP请求...

    http请求(get和post)的java实现

    在Java中,我们可以使用`java.net.URL`和`java.net.URLConnection`类来实现GET请求。然而,这里没有给出GET请求的实现代码,通常做法是创建URL对象,打开连接,然后从`getInputStream()`中读取响应。 ### 2. POST...

    java常用的工具类整理28个

    23. **java.net.URL**和**java.net.URLConnection**:处理网络资源的类,可用于下载或上传文件。 24. **java.nio.channels.FileChannel**:提供文件通道,支持大文件读写和映射到内存。 25. **java.nio.charset....

    URLConnection的使用(1)

    POST请求用于向服务器提交数据,通常用于表单提交或数据上传等场景。 ```java // 创建URL对象 URL url = new URL("http://example.com/submit"); // 打开连接 HttpURLConnection connection = (HttpURLConnection)...

Global site tag (gtag.js) - Google Analytics