//大家可根據自己需求調用里面的方法 轉發
//必導入架包 需要可找http://four.haser.top/
package com.hr.util; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; /** * Http工具類 * * Http工具類,為系統提供通用Http訪問操作方法: * * 1、發送GET請求; 2、發送POST請求。 * */ public class HttpUtil { /** * 發送GET請求 * * @param url * GET請求地址 * * @return 與當前請求對應的響應內容字節數組 * */ public static byte[] doGet(String url) { return HttpUtil.doGet(url, null, null, 0); } /** * 發送GET請求 * * @param url * GET請求地址 * @param headerMap * GET請求頭參數容器 * * @return 與當前請求對應的響應內容字節數組 * */ public static byte[] doGet(String url, Map headerMap) { return HttpUtil.doGet(url, headerMap, null, 0); } /** * 發送GET請求 * * @param url * GET請求地址 * @param proxyUrl * 代理服務器地址 * @param proxyPort * 代理服務器端口號 * * @return 與當前請求對應的響應內容字節數組 * */ public static byte[] doGet(String url, String proxyUrl, int proxyPort) { return HttpUtil.doGet(url, null, proxyUrl, proxyPort); } /** * 發送GET請求 * * @param url * GET請求地址 * @param headerMap * GET請求頭參數容器 * @param proxyUrl * 代理服務器地址 * @param proxyPort * 代理服務器端口號 * * @return 與當前請求對應的響應內容字節數組 * */ public static byte[] doGet(String url, Map headerMap, String proxyUrl, int proxyPort) { byte[] content = null; HttpClient httpClient = new HttpClient(); GetMethod getMethod = new GetMethod(url); if (headerMap != null) { // 頭部請求信息 if (headerMap != null) { Iterator iterator = headerMap.entrySet().iterator(); while (iterator.hasNext()) { Entry entry = (Entry) iterator.next(); getMethod.addRequestHeader(entry.getKey().toString(), entry.getValue().toString()); } } } if (StringUtils.isNotBlank(proxyUrl)) { httpClient.getHostConfiguration().setProxy(proxyUrl, proxyPort); } // 設置成了默認的恢復策略,在發生異常時候將自動重試3次,在這里你也可以設置成自定義的恢復策略 getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 10000); InputStream inputStream = null; try { if (httpClient.executeMethod(getMethod) == HttpStatus.SC_OK) { // 讀取內容 inputStream = getMethod.getResponseBodyAsStream(); content = IOUtils.toByteArray(inputStream); } else { System.err.println("Method failed: " + getMethod.getStatusLine()); } } catch (IOException ex) { ex.printStackTrace(); } finally { IOUtils.closeQuietly(inputStream); getMethod.releaseConnection(); } return content; } /** * 發送POST請求 * * @param url * POST請求地址 * @param parameterMap * POST請求參數容器 * * @return 與當前請求對應的響應內容字節數組 * */ public static byte[] doPost(String url, Map parameterMap) { return HttpUtil.doPost(url, null, parameterMap, null, null, 0); } /** * 發送POST請求 * * @param url * POST請求地址 * @param parameterMap * POST請求參數容器 * @param paramCharset * 參數字符集名稱 * * @return 與當前請求對應的響應內容字節數組 * */ public static byte[] doPost(String url, Map parameterMap, String paramCharset) { return HttpUtil.doPost(url, null, parameterMap, paramCharset, null, 0); } /** * 發送POST請求 * * @param url * POST請求地址 * @param headerMap * POST請求頭參數容器 * @param parameterMap * POST請求參數容器 * @param paramCharset * 參數字符集名稱 * * @return 與當前請求對應的響應內容字節數組 * */ public static byte[] doPost(String url, Map headerMap, Map parameterMap, String paramCharset) { return HttpUtil.doPost(url, headerMap, parameterMap, paramCharset, null, 0); } /** * 發送POST請求 * * @param url * POST請求地址 * @param parameterMap * POST請求參數容器 * @param paramCharset * 參數字符集名稱 * @param proxyUrl * 代理服務器地址 * @param proxyPort * 代理服務器端口號 * * @return 與當前請求對應的響應內容字節數組 * */ public static byte[] doPost(String url, Map parameterMap, String paramCharset, String proxyUrl, int proxyPort) { return HttpUtil.doPost(url, null, parameterMap, paramCharset, proxyUrl, proxyPort); } /** * 發送POST請求 * * @param url * POST請求地址 * @param headerMap * POST請求頭參數容器 * @param parameterMap * POST請求參數容器 * @param paramCharset * 參數字符集名稱 * @param proxyUrl * 代理服務器地址 * @param proxyPort * 代理服務器端口號 * * @return 與當前請求對應的響應內容字節數組 * */ public static byte[] doPost(String url, Map headerMap, Map parameterMap, String paramCharset, String proxyUrl, int proxyPort) { byte[] content = null; HttpClient httpClient = new HttpClient(); PostMethod postMethod = new PostMethod(url); //請求參數編碼 默認UTF-8 if (StringUtils.isBlank(paramCharset)) { paramCharset = "UTF-8"; } postMethod.getParams().setContentCharset(paramCharset); postMethod.getParams().setHttpElementCharset(paramCharset); if (headerMap != null) { // 頭部請求信息 if (headerMap != null) { Iterator iterator = headerMap.entrySet().iterator(); while (iterator.hasNext()) { Entry entry = (Entry) iterator.next(); postMethod.addRequestHeader(entry.getKey().toString(), entry.getValue().toString()); } } } Iterator iterator = parameterMap.keySet().iterator(); while (iterator.hasNext()) { String key = (String) iterator.next(); postMethod.addParameter(key, (String) parameterMap.get(key)); } if (StringUtils.isNotBlank(proxyUrl)) { httpClient.getHostConfiguration().setProxy(proxyUrl, proxyPort); } // 設置成了默認的恢復策略,在發生異常時候將自動重試3次,在這里你也可以設置成自定義的恢復策略 postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 10000); InputStream inputStream = null; try { if (httpClient.executeMethod(postMethod) == HttpStatus.SC_OK) { // 讀取內容 inputStream = postMethod.getResponseBodyAsStream(); content = IOUtils.toByteArray(inputStream); } else { System.err.println("Method failed: " + postMethod.getStatusLine()); } } catch (IOException ex) { ex.printStackTrace(); } finally { IOUtils.closeQuietly(inputStream); postMethod.releaseConnection(); } return content; } public static void main(String[] args) { // Map<String, String> map = new HashMap<String, String>(); // map.put("wd", "nima"); // byte[] b = doGet("http://www.baidu.com", map); // System.out.println("-------------------" + new String(b)); // Map<String, String> map = new HashMap<String, String>(); // map.put("name", "123456789"); // map.put("password", "123456"); // byte[] b = doPost("http://www.lwchen.cn/work/doLogin", map); // System.out.println("-------------------" + new String(b)); char a = 24742; System.out.println(a); } }