使用HttpURLConnect类模拟http请求的工具方法,httpurlconnect请求,package com.
分享于 点击 11850 次 点评:46
使用HttpURLConnect类模拟http请求的工具方法,httpurlconnect请求,package com.
package com.sxit.phoenix.common;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;/** * @Title: http请求工具类 * @Description: * @Author:soap 肥皂 * @Since:2012-6-13 * @Version:1.1.0 */public class HttpPostUtils { /** * @Description: 发送http请求 * @param urlAddress 请求地址 * @param paramMap 请求参数 * @return */ public static HtmlResponse httpPost(String urlAddress, Map<String, String> paramMap) { if (paramMap == null) { paramMap = new HashMap<String, String>(); } String[] params = new String[paramMap.size()]; int i = 0; for (String paramKey : paramMap.keySet()) { String param = paramKey + "=" + paramMap.get(paramKey); params[i] = param; i++; } return httpPost(urlAddress, params, null); } /** * @Description: 发送http请求 * @param urlAddress 请求地址 * @param paramMap 请求参数 * @param requestHeader 请求头 * @return */ public static HtmlResponse httpPost(String urlAddress, Map<String, String> paramMap,Map<String, String> requestHeader) { if (paramMap == null) { paramMap = new HashMap<String, String>(); } String[] params = new String[paramMap.size()]; int i = 0; for (String paramKey : paramMap.keySet()) { String param = paramKey + "=" + paramMap.get(paramKey); params[i] = param; i++; } return httpPost(urlAddress, params, requestHeader); } /** * * @Description:发送http请求 * * @param urlAddress 请求地址 * @param paramList 请求参数 * @return */ public static HtmlResponse httpPost(String urlAddress, List<String> paramList) { if (paramList == null) { paramList = new ArrayList<String>(); } return httpPost(urlAddress, paramList.toArray(new String[0]), null); } /** * * @Description: 发送http请求 * * @param urlAddress 请求地址 * @param params 请求参数 * @param requestHeader 请求头 * @return */ public static HtmlResponse httpPost(String urlAddress, String[] params, Map<String, String> requestHeader) { URL url = null; HttpURLConnection con = null; InputStream in = null; StringBuffer result = new StringBuffer(); HtmlResponse resp = null; try { url = new URL(urlAddress); con = (HttpURLConnection) url.openConnection(); con.setUseCaches(false); con.setDoOutput(true); con.setConnectTimeout(20000); //连接主机的超时时间 con.setReadTimeout(20000); //从主机读取数据的超时时间 con.setRequestMethod("POST"); if (requestHeader != null) { Set<String> keys = requestHeader.keySet(); for (Iterator<String> ite = keys.iterator(); ite.hasNext();) { String key = ite.next(); String value = requestHeader.get(key); con.setRequestProperty(key, value); } } String paramsTemp = ""; if(params!=null){ for (String param : params) { if (param != null && !"".equals(param.trim())) { paramsTemp += "&" + param; } } } byte[] b = paramsTemp.getBytes(); con.getOutputStream().write(b, 0, b.length); con.getOutputStream().flush(); con.getOutputStream().close(); in = con.getInputStream(); byte[] bytes = new byte[1024]; ByteArrayOutputStream byteOutput = new ByteArrayOutputStream(); int idex = -1; while ((idex = in.read(bytes)) !=-1) { byteOutput.write(bytes, 0, idex); } bytes = byteOutput.toByteArray(); result.append(new String(bytes,"utf-8")); resp = new HttpPostUtils.HtmlResponse(); resp.setResponseHeader(con.getHeaderFields()); resp.setResponseContent(result); resp.setResponseByteContent(bytes); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(e); } finally { try { if (in != null) { in.close(); } if (con != null) { con.disconnect(); } } catch (IOException e) { e.printStackTrace(); } } return resp; } public static class HtmlResponse { private Map<String, List<String>> responseHeader; // 响应头 private StringBuffer responseContent; // 响应内容(字符串格式) private byte[] responseByteContent; // 响应内容(二进制格式的) public Map<String, List<String>> getResponseHeader() { return responseHeader; } public void setResponseHeader(Map<String, List<String>> responseHeader) { this.responseHeader = responseHeader; } public StringBuffer getResponseContent() { return responseContent; } public void setResponseContent(StringBuffer responseContent) { this.responseContent = responseContent; } public byte[] getResponseByteContent() { return responseByteContent; } public void setResponseByteContent(byte[] responseByteContent) { this.responseByteContent = responseByteContent; } } @SuppressWarnings({ "unchecked" }) public static void main(String[] args) { Map<String, String> requestHeader = new HashMap<String, String>(); requestHeader.put("Cookie", "BIGipServerwz95598_pool=923777290.25627.0000; CSWEBSID=3hkyP8sXqZfFX1QQGYCgphyxy1wjBbBt!-1501419257"); requestHeader.put("Host", "www.cq95598.com.cn"); requestHeader.put("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3"); requestHeader.put("Referer", "http://localhost:8081/pangolin/main.html#"); @SuppressWarnings("rawtypes") Map params = new HashMap(); params.put("loginway", "01"); params.put("wusers.loginName", "herden"); params.put("wusers.pwd", "xxxx"); params.put("verifyWord", "9122"); HttpPostUtils.HtmlResponse resp = HttpPostUtils.httpPost("http://www.cq95598.com.cn/wusersAction!getMSUserInfo.cs?CSWEBSID=3hkyP8sXqZfFX1QQGYCgphyxy1wjBbBt!-1501419257", params, requestHeader); System.out.println("响应头:"+resp.getResponseHeader()); System.out.println("响应内容:"+resp.getResponseContent()); System.out.println("=================================================="); System.out.println("响应内容长度:"+resp.getResponseByteContent().length); }}//该片段来自于http://byrx.net
用户点评