compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.3.2'
// https://mvnrepository.com/artifact/org.apache.httpcomponents/httpmime
compile group: 'org.apache.httpcomponents', name: 'httpmime', version: '4.3.2'
compile group: 'com.alibaba', name: 'fastjson', version: '1.2.47'
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
public class SSLUtils {
private static TrustManager[] trustAllHttpsCertificates() throws KeyManagementException {
TrustManager[] trustManagers = new TrustManager[]{new X509TrustManager() {
@Override
public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[]{};
}
}};
return trustManagers;
}
public static CloseableHttpClient createHttpClientSSL() throws NoSuchAlgorithmException, KeyManagementException {
CloseableHttpClient httpClient = null;
TrustManager[] trustManagers = trustAllHttpsCertificates();
SSLContext sslContext = SSLContext.getInstance(SSLConnectionSocketFactory.SSL);
sslContext.init(null, trustManagers, new SecureRandom());
httpClient = HttpClients.custom().setSSLSocketFactory(new SSLConnectionSocketFactory(sslContext)).build();
return httpClient;
}
public static CloseableHttpClient createHttpClientTLS() throws NoSuchAlgorithmException, KeyManagementException {
CloseableHttpClient httpClient = null;
TrustManager[] trustManagers = trustAllHttpsCertificates();
SSLContext sslContext = SSLContext.getInstance(SSLConnectionSocketFactory.TLS);
sslContext.init(null, trustManagers, new SecureRandom());
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslContext,
new String[]{"TLSv1"},
null,
SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
httpClient = HttpClients.custom().setSSLSocketFactory(sslsf).build();
return httpClient;
}
public static SSLSocketFactory createSSLSocketFactory() throws Exception {
TrustManager[] trustManagers = trustAllHttpsCertificates();
SSLContext sslContext = SSLContext.getInstance(SSLConnectionSocketFactory.TLS);
sslContext.init(null, trustManagers, new SecureRandom());
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslContext,
new String[]{"TLSv1"},
null,
SSLConnectionSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER);
SSLSocketFactory factory = sslContext.getSocketFactory();
return factory;
}
}
import com.alibaba.fastjson.JSONObject;
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.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
public class RestUtil {
/**
* GET请求,获取JSONObject信息
*
* @param url
* @return JSONObject
* @throws Exception
*/
public static JSONObject get(String url) throws Exception {
CloseableHttpClient httpclient = SSLUtils.createHttpClientTLS();
try {
// 创建httpget.
HttpGet httpget = new HttpGet(url);
// 执行get请求.
CloseableHttpResponse response = httpclient.execute(httpget);
try {
// 获取响应实体
return covertEntityToJSON(response.getEntity());
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* GET请求,获取byte数组信息
*
* @param url
* @return byte[]
* @throws Exception
*/
public static byte[] getBinary(String url) throws Exception {
CloseableHttpClient httpclient = SSLUtils.createHttpClientTLS();
try {
// 创建httpget.
HttpGet httpget = new HttpGet(url);
// 执行get请求.
CloseableHttpResponse response = httpclient.execute(httpget);
try {
// 获取响应实体
return covertEntityToBinary(response.getEntity());
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* POST请求 HTTP
*
* @param url
* @param parameters
* @return
* @throws Exception
*/
public static JSONObject postHttp(String url, JSONObject parameters) throws Exception {
// 创建默认的httpClient实例.
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建httpPost
HttpPost httpPost = new HttpPost(url);
// 创建参数队列
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
Set<String> keySet = parameters.keySet();
for (String key : keySet) {
String value = parameters.get(key).toString();
if (value.equals("null") != true) {
nameValuePairs.add(new BasicNameValuePair(key, value));
}
}
return executeSendRequest(httpclient,httpPost,nameValuePairs);
}
/**
* POST请求 HTTPS
*
* @param url
* @param parameters
* @return JSONObject
* @throws Exception
*/
public static JSONObject postHttps(String url, JSONObject parameters) throws Exception {
// 创建默认的httpClient实例.
CloseableHttpClient httpClient = SSLUtils.createHttpClientTLS();
// 创建httpPost
HttpPost httpPost = new HttpPost(url);
// 创建参数队列
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
Set<String> keySet = parameters.keySet();
for (String key : keySet) {
String value = parameters.get(key).toString();
if (value.equals("null") != true) {
nameValuePairs.add(new BasicNameValuePair(key, value));
}
}
return executeSendRequest(httpClient,httpPost,nameValuePairs);
}
/**
* 执行发送请求
* @param httpclient
* @param httpPost
* @param nameValuePairs
* @return JSONObject
* @throws Exception
*/
private static JSONObject executeSendRequest(CloseableHttpClient httpclient, HttpPost httpPost, List<NameValuePair> nameValuePairs) throws Exception {
UrlEncodedFormEntity uefEntity;
try {
uefEntity = new UrlEncodedFormEntity(nameValuePairs, "UTF-8");
httpPost.setEntity(uefEntity);
CloseableHttpResponse response = httpclient.execute(httpPost);
try {
return covertEntityToJSON(response.getEntity());
} finally {
response.close();
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
try {
httpclient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return null;
}
/**
* 将HttpEntity转换成JSONObject
*
* @param entity
* @return JSONObject
* @throws Exception
*/
private static JSONObject covertEntityToJSON(HttpEntity entity) throws Exception {
if (entity != null) {
String res = EntityUtils.toString(entity, "UTF-8");
JSONObject jsonObject = JSONObject.parseObject(res);
return jsonObject;
} else {
return null;
}
}
/**
* 将HttpEntity转换成byte[]
*
* @param entity
* @return byte[]
* @throws Exception
*/
private static byte[] covertEntityToBinary(HttpEntity entity) throws Exception {
if (entity != null) {
byte[] res = EntityUtils.toByteArray(entity);
return res;
} else {
return null;
}
}
}