compile group: 'org.apache.httpcomponents', name: 'httpclient', version: '4.5.6'
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;
/**
* Created by roger on 2019/9/11.
*/
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.*;
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.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.util.EntityUtils;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* http/https 请求类
*
* @Author: alex
* @Date: 2020/03/08
*/
public class RestUtil {
/**
* GET请求,获取JSONObject信息
*
* @param url
* @return JSONObject
* @throws Exception
*/
public static JSONObject getByHttps(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;
}
public static JSONObject getByHttp(String url) throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
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;
}
public static String getStringByHttps(String url) throws Exception {
CloseableHttpClient httpclient = SSLUtils.createHttpClientTLS();
try {
// 创建httpget.
HttpGet httpget = new HttpGet(url);
// 执行get请求.
CloseableHttpResponse response = httpclient.execute(httpget);
try {
// 获取响应实体
HttpEntity entity = response.getEntity();
if (entity != null) {
String res = EntityUtils.toString(entity, "UTF-8");
return res;
} else {
return null;
}
} 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;
}
public static String getStringByHttps(String url, String cookie) throws Exception {
CloseableHttpClient httpclient = SSLUtils.createHttpClientTLS();
try {
// 创建httpget.
HttpGet httpget = new HttpGet(url);
httpget.addHeader("Cookie", cookie);
// 执行get请求.
CloseableHttpResponse response = httpclient.execute(httpget);
try {
// 获取响应实体
HttpEntity entity = response.getEntity();
if (entity != null) {
String res = EntityUtils.toString(entity, "UTF-8");
return res;
} else {
return null;
}
} 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[] getBinaryByHttps(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);
StringEntity s = new StringEntity(parameters.toString());
s.setContentEncoding("UTF-8");
s.setContentType("application/json");//发送json数据需要设置contentType
httpPost.setEntity(s);
HttpResponse res = httpclient.execute(httpPost);
if(res.getStatusLine().getStatusCode() == HttpStatus.SC_OK){
String result = EntityUtils.toString(res.getEntity(), "UTF-8");// 返回json格式:
JSONObject jsonObject = JSONObject.parseObject(result);
return jsonObject;
}
return null;
}
public static String postHttpForm(String url, JSONObject parameters, String cookie) {
// 创建默认的httpClient实例.
CloseableHttpClient httpclient = HttpClients.createDefault();
// 创建httpPost
HttpPost httpPost = new HttpPost(url);
httpPost.addHeader("Cookie", cookie);
// 创建参数队列
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));
}
}
UrlEncodedFormEntity uefEntity;
try {
uefEntity = new UrlEncodedFormEntity(nameValuePairs, "UTF-8");
httpPost.setEntity(uefEntity);
CloseableHttpResponse response = httpclient.execute(httpPost);
try {
String res = EntityUtils.toString(response.getEntity(), "UTF-8");
return res;
} 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;
}
/**
* 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;
}
}
public static void main(String[] args) throws Exception {
}
}
获取重定向地址信息
public static String getAA(String url, String headerName, String headerValue) throws Exception {
CloseableHttpClient httpclient = HttpClients.createDefault();
HttpClientContext context = HttpClientContext.create();
try {
// 创建httpget.
HttpGet httpget = new HttpGet(url);
httpget.addHeader(headerName, headerValue);
// 执行get请求.
CloseableHttpResponse response = httpclient.execute(httpget, context);
int responseCode = response.getStatusLine().getStatusCode();
System.out.println("responseCode " + responseCode);
HttpHost target = context.getTargetHost();
List<URI> redirectLocations = context.getRedirectLocations();
URI locationa = URIUtils.resolve(httpget.getURI(), target, redirectLocations);
System.out.println("Final HTTP location: " + locationa.toASCIIString());
return locationa.toASCIIString();
} 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;
}
浙公网安备 33010602011771号