ps:打印日志用自己的日志打印的方法就好
导包
import java.io.IOException; import java.nio.charset.StandardCharsets; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import java.util.Map; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; 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.HttpPost; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.conn.ssl.NoopHostnameVerifier; import org.apache.http.conn.ssl.SSLConnectionSocketFactory; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.ssl.SSLContextBuilder; import org.apache.http.ssl.TrustStrategy; import org.apache.http.util.EntityUtils;
代码
public static CloseableHttpClient createSSLClientDefault() { try { SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() { // 信任所有 public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { return true; } }).build(); HostnameVerifier hostnameVerifier = NoopHostnameVerifier.INSTANCE; SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(sslContext, hostnameVerifier); return HttpClients.custom().setSSLSocketFactory(sslsf).build(); } catch (Exception e) { log.error("error", e); } return HttpClients.createDefault(); } public static String postJson(String reqUrl, String json, Map<String,String> headerMap) { String strResult = ""; CloseableHttpResponse response = null; CloseableHttpClient httpClient = null; if(reqUrl.startsWith("https")){ httpClient = createSSLClientDefault(); }else{ httpClient = HttpClients.custom() .setDefaultRequestConfig( RequestConfig.custom() .setSocketTimeout(1 * 60 * 1000) .setConnectTimeout(1000) .setConnectionRequestTimeout(1000) .build() ).build(); } HttpEntity httpEntity = null; try { HttpPost httpPost = new HttpPost(reqUrl); if(headerMap != null) { headerMap.forEach((k,v) -> httpPost.addHeader(k, v)); } StringEntity entity = new StringEntity(json, "UTF-8");//解决中文乱码问题 entity.setContentType("application/json"); httpPost.setEntity(entity); response = httpClient.execute(httpPost, HttpClientContext.create()); int status = response.getStatusLine().getStatusCode(); httpEntity = response.getEntity(); if (status == 200) { return EntityUtils.toString(httpEntity, StandardCharsets.UTF_8); } else { log.error(reqUrl + " 请求错误:\r\t" + EntityUtils.toString(httpEntity, StandardCharsets.UTF_8)); } return strResult; } catch (IOException e) { log.error(" 接口请求异常 ", e); } finally { try { if (httpEntity != null) { EntityUtils.consume(httpEntity); } if (response != null) { response.close(); } } catch (IOException e) { log.error(" 接口请求异常 ", e); } } return strResult; }
参考博客:
https://blog.csdn.net/weixin_41796956/article/details/90376504
https://blog.csdn.net/qy20115549/article/details/83373954