* * * * 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应用程序中使用java.net.URLConnection类来实现POST方式的表单提交。POST方式是HTTP协议中的一种常见的请求方法,它允许客户端向服务器发送数据。下面是使用...
Java 中使用 URLConnection 类 POST 方式提交表单 Java 中使用 URLConnection 类 POST 方式提交表单是 Java 语言中的一种常用技术,用于实现 HTTP 请求代理。下面我们将详细介绍该技术的实现细节。 首先,我们需要...
在Java编程语言中,`URL`(统一资源定位符)和`URLConnection`是网络编程中的核心类,用于访问和交互互联网上的资源。这篇博客文章可能深入解析了这两个类的使用和内部工作原理。 `URL`类是Java.net包中的一个关键...
在Java编程中,`java.net.URLConnection`是用于与各种Internet协议进行通信的抽象类,而HTTP(超文本传输协议)是最常见的应用之一。本文将深入探讨如何利用URLConnection类发送HTTP请求,理解其工作原理,并提供...
在Java中进行网络编程时,经常会用到URL和URLConnection这两个类。它们位于***包中,是Java网络编程的核心组件。下面就详细介绍这两个类的使用方法和相关知识点。 ### URL类 URL类是统一资源定位符(Uniform ...
### Java URLConnection全面解析 #### 一、简介与准备工作 `URLConnection` 是Java标准库中的一个接口,位于`java.net`包下,用于抽象出网络连接。通过`URLConnection`,开发者能够实现对HTTP请求的基本控制,例如...
Java URL和URLConnection是Java语言中两个非常重要的类,它们都是java.net包下的类,分别用于处理URL地址和连接URL请求。这两个类都是Java网络编程中非常重要的组成部分,掌握它们的使用方法对Java开发者来说非常...
Java URLConnection 是Java标准库中用于与网络资源建立连接的类,它允许程序与服务器进行交互,例如发送HTTP请求并接收响应。以下是对Java URLConnection的详细总结: 1. **请求类别**: - **GET**:最常见的HTTP...
POST方法用于向服务器提交数据,常用于表单提交或发送JSON数据。在Java中,我们通常会把数据序列化成字符串,然后通过`setDoOutput`和`DataOutputStream`写入到连接中。 在实际开发中,为了提高代码的可读性和可...
`java.net.URLConnection`是Java标准库提供的一种基础网络连接类,可以用来处理各种类型的网络连接,包括HTTP。以下是如何利用`java.net.URLConnection`发送HTTP请求的详细步骤: 1. **创建URL对象**: 首先,你...
在Android开发中,`URLConnection`是Java标准库提供的一个基础网络通信组件,它允许应用程序通过打开到指定URL的连接来读取和写入数据。在本文中,我们将深入探讨如何使用`URLConnection`进行网络编程,并结合提供的...
POST请求常用于向服务器提交数据,例如表单数据。使用`setDoOutput(true)`方法开启POST功能,并设置`Content-Type`头来指定数据格式: ```java connection.setDoOutput(true); connection.setRequestProperty(...
在Java中,通过`HttpURLConnection`类可以轻松地实现POST请求,用于发送和接收文件流。该方法主要涉及到以下几个步骤: - **创建URL对象**:首先需要根据指定的URL地址创建一个`URL`对象。 - **设置HTTP连接属性**...
本文将详细介绍如何在Android应用中使用`URLConnection`来提交HTTP请求,包括GET和POST两种常见方式。 首先,我们需要理解`URLConnection`的基本用法。`URLConnection`是所有URL连接的抽象基类,通过`URL`对象的`...
理解URL的各个组成部分后,我们可以通过`openConnection()`方法获取到与该URL对应的URLConnection对象,它是`java.net.URLConnection`类的实例。URLConnection是Java中连接网络资源的基础,它可以用于读取、写入或...
首先,URLConnection是java.net包中的一个抽象类,它是所有HTTP连接的基类,包括HTTP、HTTPS等多种协议。它提供了对URL的基本操作,如打开连接、发送请求、接收响应等。利用URLConnection,我们可以手动构建HTTP请求...
在Java中,我们可以使用`java.net.URL`和`java.net.URLConnection`类来实现GET请求。然而,这里没有给出GET请求的实现代码,通常做法是创建URL对象,打开连接,然后从`getInputStream()`中读取响应。 ### 2. POST...
23. **java.net.URL**和**java.net.URLConnection**:处理网络资源的类,可用于下载或上传文件。 24. **java.nio.channels.FileChannel**:提供文件通道,支持大文件读写和映射到内存。 25. **java.nio.charset....
POST请求用于向服务器提交数据,通常用于表单提交或数据上传等场景。 ```java // 创建URL对象 URL url = new URL("http://example.com/submit"); // 打开连接 HttpURLConnection connection = (HttpURLConnection)...