HttpRequestProxy 请求代理 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); }}?