HttpClientUtils.java 3.59 KB
package com.bsth.data.utils;

import org.apache.http.HttpEntity;
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.message.BasicHeader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Created by panzhao on 2017/8/2.
 */
public class HttpClientUtils {

    static Logger logger = LoggerFactory.getLogger(HttpClientUtils.class);

    public static StringBuilder get(String url) throws Exception {
        CloseableHttpClient httpClient = null;
        CloseableHttpResponse response = null;
        StringBuilder stringBuffer = null;
        try {
            httpClient = HttpClients.createDefault();
            HttpGet get = new HttpGet(url);

            get.setHeader("Accept", "application/json;charset=utf-8");
            get.setHeader(new BasicHeader("Content-Type", "application/json; charset=utf-8"));

            //超时时间
            RequestConfig requestConfig = RequestConfig.custom()
                    .setConnectTimeout(12500).setConnectionRequestTimeout(12000)
                    .setSocketTimeout(12500).build();
            get.setConfig(requestConfig);
            get.addHeader("Content-Encoding", "gzip");

            response = httpClient.execute(get);
            stringBuffer = getResult(response.getEntity());
        } catch (Exception e) {
            logger.error("", e);
        } finally {
            if (null != httpClient)
                httpClient.close();
            if (null != response)
                response.close();
        }
        return stringBuffer;
    }

    /**
     * raw post data
     * @param url
     * @param data
     * @return
     */
    public static StringBuilder post(String url, String data) throws Exception {
        CloseableHttpClient httpClient = null;
        CloseableHttpResponse response = null;
        StringBuilder stringBuffer = null;
        try {
            httpClient = HttpClients.createDefault();
            HttpPost post = new HttpPost(url);

            post.setHeader("Accept", "application/json");
            post.setHeader("Content-Type", "application/json");
            //超时时间
            RequestConfig requestConfig = RequestConfig.custom()
                    .setConnectTimeout(7500).setConnectionRequestTimeout(7000)
                    .setSocketTimeout(8500).build();
            post.setConfig(requestConfig);
            post.setEntity((new StringEntity(data, "UTF-8")));

            response = httpClient.execute(post);
            stringBuffer = getResult(response.getEntity());
        } catch (Exception e) {
            logger.error("", e);
        } finally {
            if (null != httpClient)
                httpClient.close();
            if (null != response)
                response.close();
        }
        return stringBuffer;
    }

    private static StringBuilder getResult(HttpEntity entity) throws IOException {
        StringBuilder stringBuffer = null;
        if (null != entity) {
            BufferedReader br = new BufferedReader(new InputStreamReader(entity.getContent()));
            stringBuffer = new StringBuilder();
            String str = "";
            while ((str = br.readLine()) != null)
                stringBuffer.append(str);
        }
        return stringBuffer;
    }
}