|
@@ -1,212 +0,0 @@ |
|
|
package com.hz.pm.api.common.util; |
|
|
|
|
|
|
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
|
|
import org.apache.http.HttpEntity; |
|
|
|
|
|
import org.apache.http.NameValuePair; |
|
|
|
|
|
import org.apache.http.client.config.RequestConfig; |
|
|
|
|
|
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.conn.ssl.DefaultHostnameVerifier; |
|
|
|
|
|
import org.apache.http.conn.ssl.NoopHostnameVerifier; |
|
|
|
|
|
import org.apache.http.conn.ssl.SSLConnectionSocketFactory; |
|
|
|
|
|
import org.apache.http.conn.ssl.TrustStrategy; |
|
|
|
|
|
import org.apache.http.conn.util.PublicSuffixMatcher; |
|
|
|
|
|
import org.apache.http.conn.util.PublicSuffixMatcherLoader; |
|
|
|
|
|
import org.apache.http.entity.StringEntity; |
|
|
|
|
|
import org.apache.http.impl.client.CloseableHttpClient; |
|
|
|
|
|
import org.apache.http.impl.client.HttpClientBuilder; |
|
|
|
|
|
import org.apache.http.impl.client.HttpClients; |
|
|
|
|
|
import org.apache.http.message.BasicNameValuePair; |
|
|
|
|
|
import org.apache.http.ssl.SSLContexts; |
|
|
|
|
|
import org.apache.http.util.EntityUtils; |
|
|
|
|
|
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; |
|
|
|
|
|
|
|
|
|
|
|
import javax.net.ssl.SSLContext; |
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
import java.net.URL; |
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Map; |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* <p> |
|
|
|
|
|
* HttpUtil |
|
|
|
|
|
* </p> |
|
|
|
|
|
* |
|
|
|
|
|
* @author WendyYang |
|
|
|
|
|
* @since 14:39 2023/12/17 |
|
|
|
|
|
*/ |
|
|
|
|
|
@Slf4j |
|
|
|
|
|
public class HttpUtil { |
|
|
|
|
|
private static final RequestConfig REQUEST_CONFIG = RequestConfig.custom() |
|
|
|
|
|
.setSocketTimeout(15000) |
|
|
|
|
|
.setConnectTimeout(15000) |
|
|
|
|
|
.setConnectionRequestTimeout(15000) |
|
|
|
|
|
.build(); |
|
|
|
|
|
private static HttpUtil instance = null; |
|
|
|
|
|
|
|
|
|
|
|
private HttpUtil() { |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public static HttpUtil getInstance() { |
|
|
|
|
|
if (instance == null) { |
|
|
|
|
|
instance = new HttpUtil(); |
|
|
|
|
|
} |
|
|
|
|
|
return instance; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送 post 请求 |
|
|
|
|
|
* |
|
|
|
|
|
* @param httpUrl 地址 |
|
|
|
|
|
*/ |
|
|
|
|
|
public String sendHttpPost(String httpUrl) { |
|
|
|
|
|
// 创建 httpPost |
|
|
|
|
|
HttpPost httpPost = new HttpPost(httpUrl); |
|
|
|
|
|
return sendHttpPost(httpPost); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送 post 请求 |
|
|
|
|
|
* |
|
|
|
|
|
* @param httpUrl 地址 |
|
|
|
|
|
* @param params 参数(格式:key1=value1&key2=value2) |
|
|
|
|
|
*/ |
|
|
|
|
|
public String sendHttpPost(String httpUrl, String params) { |
|
|
|
|
|
HttpPost httpPost = new HttpPost(httpUrl);// 创建 httpPost |
|
|
|
|
|
try { |
|
|
|
|
|
//设置参数 |
|
|
|
|
|
StringEntity stringEntity = new StringEntity(params, "UTF-8"); |
|
|
|
|
|
stringEntity.setContentType("application/x-www-form-urlencoded"); |
|
|
|
|
|
httpPost.setEntity(stringEntity); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.error(e.getMessage(), e); |
|
|
|
|
|
} |
|
|
|
|
|
return sendHttpPost(httpPost); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送 post 请求 |
|
|
|
|
|
* |
|
|
|
|
|
* @param httpUrl 地址 |
|
|
|
|
|
* @param maps 参数 |
|
|
|
|
|
*/ |
|
|
|
|
|
public String sendHttpPost(String httpUrl, Map<String, String> maps) { |
|
|
|
|
|
HttpPost httpPost = new HttpPost(httpUrl);// 创建 httpPost |
|
|
|
|
|
// 创建参数队列 |
|
|
|
|
|
List<NameValuePair> nameValuePairs = new ArrayList<>(); |
|
|
|
|
|
for (Map.Entry<String, String> entry : maps.entrySet()) { |
|
|
|
|
|
nameValuePairs.add(new BasicNameValuePair(entry.getKey(), entry.getValue())); |
|
|
|
|
|
} |
|
|
|
|
|
try { |
|
|
|
|
|
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.error(e.getMessage(), e); |
|
|
|
|
|
} |
|
|
|
|
|
return sendHttpPost(httpPost); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送 Post请求 |
|
|
|
|
|
* |
|
|
|
|
|
* @param httpPost \ |
|
|
|
|
|
* @return \ |
|
|
|
|
|
*/ |
|
|
|
|
|
private String sendHttpPost(HttpPost httpPost) { |
|
|
|
|
|
httpPost.setConfig(REQUEST_CONFIG); |
|
|
|
|
|
try (CloseableHttpClient httpClient = HttpClients.createDefault(); |
|
|
|
|
|
CloseableHttpResponse response = httpClient.execute(httpPost)) { |
|
|
|
|
|
HttpEntity entity = response.getEntity(); |
|
|
|
|
|
return EntityUtils.toString(entity, "UTF-8"); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.error(e.getMessage(), e); |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送 get 请求 |
|
|
|
|
|
* |
|
|
|
|
|
* @param httpUrl \ |
|
|
|
|
|
*/ |
|
|
|
|
|
public String sendHttpGet(String httpUrl) { |
|
|
|
|
|
HttpGet httpGet = new HttpGet(httpUrl);// 创建 get 请求 |
|
|
|
|
|
return sendHttpGet(httpGet); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送 get请求 Https |
|
|
|
|
|
* |
|
|
|
|
|
* @param httpUrl \ |
|
|
|
|
|
*/ |
|
|
|
|
|
public String sendHttpsGet(String httpUrl) throws IOException { |
|
|
|
|
|
HttpGet httpGet = new HttpGet(httpUrl);// 创建 get 请求 |
|
|
|
|
|
return sendHttpsGet(httpGet); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送 Get请求 |
|
|
|
|
|
* |
|
|
|
|
|
* @param httpGet \ |
|
|
|
|
|
* @return \ |
|
|
|
|
|
*/ |
|
|
|
|
|
private String sendHttpGet(HttpGet httpGet) { |
|
|
|
|
|
httpGet.setConfig(REQUEST_CONFIG); |
|
|
|
|
|
try (CloseableHttpClient httpClient = HttpClients.createDefault(); |
|
|
|
|
|
CloseableHttpResponse response = httpClient.execute(httpGet);) { |
|
|
|
|
|
// 创建默认的 httpClient 实例. |
|
|
|
|
|
HttpEntity entity = response.getEntity(); |
|
|
|
|
|
return EntityUtils.toString(entity, "UTF-8"); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.error(e.getMessage(), e); |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 发送 Get请求 Https |
|
|
|
|
|
* |
|
|
|
|
|
* @return \ |
|
|
|
|
|
*/ |
|
|
|
|
|
private String sendHttpsGet(HttpGet httpGet) throws IOException { |
|
|
|
|
|
// 创建默认的 httpClient 实例. |
|
|
|
|
|
PublicSuffixMatcher publicSuffixMatcher = PublicSuffixMatcherLoader.load(new |
|
|
|
|
|
URL(httpGet.getURI().toString())); |
|
|
|
|
|
DefaultHostnameVerifier hostnameVerifier = new DefaultHostnameVerifier(publicSuffixMatcher); |
|
|
|
|
|
httpGet.setConfig(REQUEST_CONFIG); |
|
|
|
|
|
|
|
|
|
|
|
try (CloseableHttpClient httpClient = HttpClients.custom().setSSLHostnameVerifier(hostnameVerifier).build(); |
|
|
|
|
|
CloseableHttpResponse response = httpClient.execute(httpGet)) { |
|
|
|
|
|
HttpEntity entity = response.getEntity(); |
|
|
|
|
|
return EntityUtils.toString(entity, "UTF-8"); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.error(e.getMessage(), e); |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 通过该工厂类创建的RestTemplate发送请求时,可忽略https证书认证 |
|
|
|
|
|
* |
|
|
|
|
|
* @return 工厂 |
|
|
|
|
|
*/ |
|
|
|
|
|
public static HttpComponentsClientHttpRequestFactory generateHttpRequestFactory() { |
|
|
|
|
|
try { |
|
|
|
|
|
TrustStrategy acceptingTrustStrategy = ((x509Certificates, authType) -> true); |
|
|
|
|
|
SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, acceptingTrustStrategy).build(); |
|
|
|
|
|
SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier()); |
|
|
|
|
|
|
|
|
|
|
|
HttpClientBuilder httpClientBuilder = HttpClients.custom(); |
|
|
|
|
|
httpClientBuilder.setSSLSocketFactory(connectionSocketFactory); |
|
|
|
|
|
CloseableHttpClient httpClient = httpClientBuilder.build(); |
|
|
|
|
|
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); |
|
|
|
|
|
factory.setHttpClient(httpClient); |
|
|
|
|
|
return factory; |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.error(e.getMessage(), e); |
|
|
|
|
|
} |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|