第一次ChatGPT代码沟通评审
import org.apache.http.*;
import org.apache.http.client.*;
import org.apache.http.client.methods.*;
import org.apache.http.conn.ssl.*;
import org.apache.http.entity.*;
import org.apache.http.impl.client.*;
import org.apache.http.ssl.*;
import org.apache.http.util.*;
import org.apache.logging.log4j.*;
import java.io.*;
public class OpenPlatformHttpsUtilNew {
private static final Logger logger = LogManager.getLogger(OpenPlatformHttpsUtilNew.class);
public static String post(String url, String reqJson, String charsetName) {
if (charsetName == null || charsetName.isBlank()) {
charsetName = "UTF-8";
}
try {
SSLConnectionSocketFactory sslsf = createSslSocketFactory();
CloseableHttpClient httpClient = createHttpClient(url, sslsf);
HttpPost httpPost = createHttpPost(url, charsetName, reqJson);
try (CloseableHttpResponse httpResponse = httpClient.execute(httpPost)) {
HttpEntity entity = httpResponse.getEntity();
String body = EntityUtils.toString(entity, charsetName);
logger.info("向" + url + "发起HTTP,JSON请求,返回值为:" + body);
EntityUtils.consume(entity);
return body;
}
} catch (IOException e) {
logger.error("IOException", e);
} catch (Exception e) {
logger.error("Exception", e);
}
return null;
}
private static SSLConnectionSocketFactory createSslSocketFactory() {
return new SSLConnectionSocketFactory(
SSLContexts.createDefault(),
new String[]{"TLSv1.2", "TLSv1.3"},
null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
}
private static CloseableHttpClient createHttpClient(String url, SSLConnectionSocketFactory sslsf) {
if (url != null && url.startsWith("https")) {
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
} else {
return HttpClientBuilder.create().build();
}
}
private static HttpPost createHttpPost(String url, String charsetName, String reqJson) {
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Content-type", "application/json;charset=UTF-8");
httpPost.setHeader("Accept-Type", charsetName);
httpPost.setEntity(new StringEntity(reqJson, "UTF-8"));
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(url.startsWith("https") ? 600000 : 300 * 1000)
.setConnectTimeout(url.startsWith("https") ? 600000 : 300 * 1000)
.build();
httpPost.setConfig(requestConfig);
return httpPost;
}
}
第二次沟通代码评审
import org.apache.http.*;
import org.apache.http.client.methods.*;
import org.apache.http.conn.ssl.*;
import org.apache.http.entity.*;
import org.apache.http.impl.client.*;
import org.apache.http.ssl.*;
import org.apache.http.util.*;
import org.apache.logging.log4j.*;
import java.io.*;
public class OpenPlatformHttpsUtilNew {
private static final Logger logger = LogManager.getLogger(OpenPlatformHttpsUtilNew.class);
public static String post(String url, String reqJson, String charsetName) {
if (charsetName == null || charsetName.isBlank()) {
charsetName = "UTF-8";
}
try (CloseableHttpClient httpClient = createHttpClient(url);
CloseableHttpResponse httpResponse = executeHttpPost(url, reqJson, charsetName, httpClient)) {
HttpEntity entity = httpResponse.getEntity();
String body = EntityUtils.toString(entity, charsetName);
logger.info("向" + url + "发起HTTP,JSON请求,返回值为:" + body);
EntityUtils.consume(entity);
return body;
} catch (IOException e) {
logger.error("IOException", e);
} catch (Exception e) {
logger.error("Exception", e);
}
return null;
}
private static SSLConnectionSocketFactory createSslSocketFactory() {
return new SSLConnectionSocketFactory(
SSLContexts.createDefault(),
new String[]{"TLSv1.2", "TLSv1.3"},
null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
}
private static CloseableHttpClient createHttpClient(String url) {
if (url != null && url.startsWith("https")) {
SSLConnectionSocketFactory sslsf = createSslSocketFactory();
return HttpClients.custom().setSSLSocketFactory(sslsf).build();
} else {
return HttpClientBuilder.create().build();
}
}
private static CloseableHttpResponse executeHttpPost(String url, String reqJson, String charsetName, CloseableHttpClient httpClient) throws IOException {
HttpPost httpPost = createHttpPost(url, charsetName, reqJson);
return httpClient.execute(httpPost);
}
private static HttpPost createHttpPost(String url, String charsetName, String reqJson) {
HttpPost httpPost = new HttpPost(url);
httpPost.setHeader("Content-type", "application/json;charset=UTF-8");
httpPost.setHeader("Accept-Type", charsetName);
httpPost.setEntity(new StringEntity(reqJson, "UTF-8"));
int timeout = url.startsWith("https") ? 600000 : 300 * 1000;
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(timeout)
.setConnectTimeout(timeout)
.build();
httpPost.setConfig(requestConfig);
return httpPost;
}
}
欢迎沟通交流学习