回覆列表
  • 1 # leoto4973

    以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

  • 中秋節和大豐收的關聯?
  • 怎樣透過位運算實現對任意數求餘(%)?