httpClientUtils

httpClientUtils

import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;
import org.apache.http.ParseException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.*;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.conn.ssl.TrustStrategy;
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.BasicNameValuePair;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.util.EntityUtils;

import javax.net.ssl.SSLContext;
import java.io.IOException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

public class HttpClient {
private String url;
private Map param;
private int statusCode;
private String content;
private String xmlParam;
private boolean isHttps;

public boolean isHttps() {
    return isHttps;
}

public void setHttps(boolean isHttps) {
    this.isHttps = isHttps;
}

public String getXmlParam() {
    return xmlParam;
}

public void setXmlParam(String xmlParam) {
    this.xmlParam = xmlParam;
}

public HttpClient(String url, Map param) {
    this.url = url;
    this.param = param;
}

public HttpClient(String url) {
    this.url = url;
}

public void setParameter(Map map) {
    param = map;
}

public void addParameter(String key, String value) {
    if (param == null)
        param = new HashMap();
    param.put(key, value);
}

public void post() throws ClientProtocolException, IOException {
    HttpPost http = new HttpPost(url);
    setEntity(http);
    execute(http);
}

public void put() throws ClientProtocolException, IOException {
    HttpPut http = new HttpPut(url);
    setEntity(http);
    execute(http);
}

public void get() throws ClientProtocolException, IOException {
    if (param != null) {
        StringBuilder url = new StringBuilder(this.url);
        boolean isFirst = true;
        for (String key : param.keySet()) {
            if (isFirst) {
                url.append("?");
            }else {
                url.append("&");
            }
            url.append(key).append("=").append(param.get(key));
        }
        this.url = url.toString();
    }
    HttpGet http = new HttpGet(url);
    execute(http);
}

/**
 * set http post,put param
 */
private void setEntity(HttpEntityEnclosingRequestBase http) {
    if (param != null) {
        List nvps = new LinkedList();
        for (String key : param.keySet()) {
            nvps.add(new BasicNameValuePair(key, param.get(key))); // 参数
        }
        http.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8)); // 设置参数
    }
    if (xmlParam != null) {
        http.setEntity(new StringEntity(xmlParam, Consts.UTF_8));
    }
}

private void execute(HttpUriRequest http) throws ClientProtocolException,
        IOException {
    CloseableHttpClient httpClient = null;
    try {
        if (isHttps) {
            SSLContext sslContext = new SSLContextBuilder()
                    .loadTrustMaterial(null, new TrustStrategy() {
                        // 信任所有
                        @Override
                        public boolean isTrusted(X509Certificate[] chain,
                                                 String authType)
                                throws CertificateException {
                            return true;
                        }
                    }).build();
            SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
                    sslContext);
            httpClient = HttpClients.custom().setSSLSocketFactory(sslsf)
                    .build();
        } else {
            httpClient = HttpClients.createDefault();
        }
        CloseableHttpResponse response = httpClient.execute(http);
        try {
            if (response != null) {
                if (response.getStatusLine() != null) {
                    statusCode = response.getStatusLine().getStatusCode();
                }
                HttpEntity entity = response.getEntity();
                // 响应内容
                content = EntityUtils.toString(entity, Consts.UTF_8);
            }
        } finally {
            response.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        httpClient.close();
    }
}

public int getStatusCode() {
    return statusCode;
}

public String getContent() throws ParseException, IOException {
    return content;
}

}

你可能感兴趣的:(httpClientUtils)