怎么調用httputil工具類?
以java為例,調用httputil示例如下: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 與當前請求對應的響應內容字節數組 * * @modify 竇海寧, 2012-03-19 */ 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 與當前請求對應的響應內容字節數組 * * @modify 竇海寧, 2012-03-19 */ 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); //postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER , new DefaultHttpMethodRetryHandler()); 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 與當前請求對應的響應內容字節數組 * * @modify 竇海寧, 2012-05-21 */ 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 與當前請求對應的響應內容字節數組 * * @modify 竇海寧, 2012-05-21 */ 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 與當前請求對應的響應內容字節數組 * * @modify 竇海寧, 2012-05-21 */ 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); if (StringUtils.isNotBlank(paramCharset)) { 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); //postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER , new DefaultHttpMethodRetryHandler()); 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