HttpUtils 發送http請求工具類

來源:互聯網
上載者:User

標籤:pool   valueof   tom   entity   commons   bsp   tco   apache   codec   

import java.io.IOException;import java.io.UnsupportedEncodingException;import java.net.URISyntaxException;import java.util.ArrayList;import java.util.Map;import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.config.RequestConfig;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.methods.HttpGet;import org.apache.http.client.methods.HttpPost;import org.apache.http.client.methods.HttpRequestBase;import org.apache.http.client.utils.URIBuilder;import org.apache.http.entity.StringEntity;import org.apache.http.impl.client.CloseableHttpClient;import org.apache.http.impl.client.HttpClients;import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;import org.apache.http.message.BasicNameValuePair;import org.apache.http.util.EntityUtils;import com.pingan.qhcs.map.audit.constant.CodeConstant;import com.pingan.qhcs.map.audit.exception.MapException;public class HttpClientUtil {    protected static Log logger = LogFactory.getLog(HttpClientUtil.class);        private static PoolingHttpClientConnectionManager cm;    private static String EMPTY_STR = "";    private static String UTF_8 = "UTF-8";    private static void init() {        if (cm == null) {            cm = new PoolingHttpClientConnectionManager();            cm.setMaxTotal(50);// 整個串連池最大串連數            cm.setDefaultMaxPerRoute(5);// 每路由最大串連數,預設值是2        }    }    /**     * 通過串連池擷取HttpClient     *      * @return     */    public static CloseableHttpClient getHttpClient() {        init();        return HttpClients.custom().setConnectionManager(cm).build();    }    public static String httpGetRequest(String url) {        HttpGet httpGet = new HttpGet(url);        return getResult(httpGet);    }    public static String httpGetRequest(String url, Map<String, Object> params) throws URISyntaxException {        URIBuilder ub = new URIBuilder();        ub.setPath(url);        ArrayList<NameValuePair> pairs = covertParams2NVPS(params);        ub.setParameters(pairs);        HttpGet httpGet = new HttpGet(ub.build());                return getResult(httpGet);    }    public static String httpGetRequest(String url, Map<String, Object> headers, Map<String, Object> params)            throws URISyntaxException {        URIBuilder ub = new URIBuilder();        ub.setPath(url);        ArrayList<NameValuePair> pairs = covertParams2NVPS(params);        ub.setParameters(pairs);        HttpGet httpGet = new HttpGet(ub.build());        for (Map.Entry<String, Object> param : headers.entrySet()) {            httpGet.addHeader(param.getKey(), String.valueOf(param.getValue()));        }        return getResult(httpGet);    }    public static String httpPostRequest(String url) {        HttpPost httpPost = new HttpPost(url);        return getResult(httpPost);    }    public static String httpPostRequest(String url, Map<String, Object> params) throws UnsupportedEncodingException {        HttpPost httpPost = new HttpPost(url);        ArrayList<NameValuePair> pairs = covertParams2NVPS(params);        httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));        return getResult(httpPost);    }    public static String httpPostRequest(String url, Map<String, Object> headers, Map<String, Object> params)            throws UnsupportedEncodingException {        HttpPost httpPost = new HttpPost(url);        for (Map.Entry<String, Object> param : headers.entrySet()) {            httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));        }        ArrayList<NameValuePair> pairs = covertParams2NVPS(params);        httpPost.setEntity(new UrlEncodedFormEntity(pairs, UTF_8));        return getResult(httpPost);    }    public static String httpPostRequest(String url, Map<String, Object> headers, String strBody)            throws Exception {        HttpPost httpPost = new HttpPost(url);        for (Map.Entry<String, Object> param : headers.entrySet()) {            httpPost.addHeader(param.getKey(), String.valueOf(param.getValue()));        }        httpPost.setEntity(new StringEntity(strBody, UTF_8));        return getResult(httpPost);    }        private static ArrayList<NameValuePair> covertParams2NVPS(Map<String, Object> params) {        ArrayList<NameValuePair> pairs = new ArrayList<NameValuePair>();        for (Map.Entry<String, Object> param : params.entrySet()) {            pairs.add(new BasicNameValuePair(param.getKey(), String.valueOf(param.getValue())));        }        return pairs;    }    /**     * 處理Http請求     *      *  setConnectTimeout:設定連線逾時時間,單位毫秒。     *  setConnectionRequestTimeout:設定從connect Manager擷取Connection 逾時時間,單位毫秒。這個屬性是新加的屬性,因為目前版本是可以共用串連池的。     *  setSocketTimeout:請求擷取資料的逾時時間,單位毫秒。 如果訪問一個介面,多少時間內無法返回資料,就直接放棄此次調用。     *       * @param request     * @return     */    private static String getResult(HttpRequestBase request) {                RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(60000)                .setConnectionRequestTimeout(5000).setSocketTimeout(60000).build();        request.setConfig(requestConfig);// 佈建要求和傳輸逾時時間        // CloseableHttpClient httpClient = HttpClients.createDefault();        CloseableHttpClient httpClient = getHttpClient();        try {            CloseableHttpResponse response = httpClient.execute(request); //執行請求            // response.getStatusLine().getStatusCode();            HttpEntity entity = response.getEntity();            if (entity != null) {                // long len = entity.getContentLength();// -1 表示長度未知                String result = EntityUtils.toString(entity);                response.close();                // httpClient.close();                return result;            }        } catch (ClientProtocolException e) {            logger.error("[maperror] HttpClientUtil ClientProtocolException : " + e.getMessage());            throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil ClientProtocolException :" + e.getMessage());        } catch (IOException e) {            logger.error("[maperror] HttpClientUtil IOException : " + e.getMessage());            throw new MapException(CodeConstant.CODE_CONNECT_FAIL, "HttpClientUtil IOException :" + e.getMessage());        } finally {        }        return EMPTY_STR;    }}

 

HttpUtils 發送http請求工具類

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.