zoukankan      html  css  js  c++  java
  • HttpClientUtil请求http地址的工具类

    直接贴代码:

    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.http.Header;
    import org.apache.http.HttpEntity;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.config.RequestConfig;
    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.entity.StringEntity;
    import org.apache.http.impl.client.CloseableHttpClient;
    import org.apache.http.impl.client.HttpClients;
    import org.apache.http.util.EntityUtils;
    
    /**
     * HttpClientUtil
     */
    public class HttpClientUtil {
    
        // 连接主机超时(30s)
        public static final int HTTP_CONNECT_TIMEOUT_30S = 30 * 1000;
    
        // 从主机读取数据超时(3min)
        public static final int HTTP_READ_TIMEOUT_3MIN = 180 * 1000;
    
        /**
         * httpPost
         */
        public static String httpPost(String url, String jsonParam) throws ClientProtocolException, IOException {
            CloseableHttpClient httpclient = HttpClients.createDefault();
            HttpPost httpPost = new HttpPost(url);
    
            // 设置请求头和请求参数
            if (null != jsonParam && !jsonParam.isEmpty()) {
                StringEntity entity = new StringEntity(jsonParam, "utf-8");
                entity.setContentEncoding("UTF-8");
                entity.setContentType("application/json");
                httpPost.setEntity(entity);
            }
    
            // 超时时间设置
            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(HTTP_READ_TIMEOUT_3MIN)
                    .setConnectTimeout(HTTP_CONNECT_TIMEOUT_30S).build();
            httpPost.setConfig(requestConfig);
    
            // 发送请求
            CloseableHttpResponse response = httpclient.execute(httpPost);
    
            // 获取返回内容
            try {
                HttpEntity entity = response.getEntity();
                String str = EntityUtils.toString(entity);
                EntityUtils.consume(entity); // 此句关闭了流
                return str;
            } finally {
                response.close();
            }
        }
    
        /**
         * httpPost get Cookies
         */
        public static Map<String, Object> httpPostGetCookies(String url, String jsonParam) throws ClientProtocolException,
                IOException {
            CloseableHttpClient httpclient = HttpClients.createDefault();
            HttpPost httpPost = new HttpPost(url);
    
            // 设置请求头和请求参数
            if (null != jsonParam && !jsonParam.isEmpty()) {
                StringEntity entity = new StringEntity(jsonParam, "utf-8");
                entity.setContentEncoding("UTF-8");
                entity.setContentType("application/json");
                httpPost.setEntity(entity);
            }
    
            // 超时时间设置
            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(HTTP_READ_TIMEOUT_3MIN)
                    .setConnectTimeout(HTTP_CONNECT_TIMEOUT_30S).build();
            httpPost.setConfig(requestConfig);
    
            // 发送请求
            CloseableHttpResponse response = httpclient.execute(httpPost);
    
            // 获取返回内容
            try {
                HttpEntity entity = response.getEntity();
                String str = EntityUtils.toString(entity);
                EntityUtils.consume(entity); // 此句关闭了流
    
                // 获取数据内容
                Map<String, Object> map = new HashMap<String, Object>();
                map.put("result", str);
    
                // 获取返回到额Cookies
                Header[] headers = response.getHeaders("Set-Cookie");
                map.put("cookies", headers);
    
                return map;
            } finally {
                response.close();
            }
        }
    
        /**
         * httpGet
         */
        public static String httpGet(String url) throws ClientProtocolException, IOException {
            CloseableHttpClient httpclient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet(url);
    
            // 超时时间设置
            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(HTTP_READ_TIMEOUT_3MIN)
                    .setConnectTimeout(HTTP_CONNECT_TIMEOUT_30S).build();
            httpGet.setConfig(requestConfig);
    
            // 发送请求
            CloseableHttpResponse response = httpclient.execute(httpGet);
    
            // 获取返回内容
            try {
                HttpEntity entity = response.getEntity();
                String strResult = EntityUtils.toString(entity);
                return strResult;
            } finally {
                response.close();
            }
        }
    
        /**
         * httpGet with Cookies
         */
        public static String httpGetWithCookies(String url, Header[] headers) throws ClientProtocolException, IOException {
            CloseableHttpClient httpclient = HttpClients.createDefault();
            HttpGet httpGet = new HttpGet(url);
    
            // 超时时间设置
            RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(HTTP_READ_TIMEOUT_3MIN)
                    .setConnectTimeout(HTTP_CONNECT_TIMEOUT_30S).build();
            httpGet.setConfig(requestConfig);
    
            // 设置请求头
            if (headers != null && headers.length > 0) {
                httpGet.setHeaders(headers);
            }
    
            // 发送请求
            CloseableHttpResponse response = httpclient.execute(httpGet);
    
            // 获取返回内容
            try {
                HttpEntity entity = response.getEntity();
                String strResult = EntityUtils.toString(entity);
                return strResult;
            } finally {
                response.close();
            }
        }
    
    }
  • 相关阅读:
    EIGRP系统复习【转载】
    EIGRP系统复习【转载】
    EIGRP系统复习【转载】
    新CCIE笔记之'口口相传'路由协议
    新CCIE笔记之'口口相传'路由协议
    新CCIE笔记之'口口相传'路由协议
    【★】自制网络心理需求大排名!
    【★】假如人类使用16进制
    【★】假如人类使用16进制
    算法之【大整数乘法】
  • 原文地址:https://www.cnblogs.com/zj0208/p/5850266.html
Copyright © 2011-2022 走看看