public final class SdkHttpUtil {
private final static Logger logger = LoggerFactory.getLogger(SdkHttpUtil.class);
public static String httpPostWithJson(String url, String json) throws IOException {
// post,put请求支持重定向
CloseableHttpClient httpClient = HttpClientBuilder.create().setRedirectStrategy(new LaxRedirectStrategy()).build();
// 配置信息
RequestConfig requestConfig = RequestConfig.custom()
// 设置连接超时时间(单位毫秒)
.setConnectTimeout(5000)
// 设置请求超时时间(单位毫秒)
.setConnectionRequestTimeout(10000)
// socket读写超时时间(单位毫秒)
.setSocketTimeout(10000)
// 设置是否允许重定向(默认为true)
.setRedirectsEnabled(true).build();
ResponseHandler<String> responseHandler = new BasicResponseHandler();
try {
HttpPost httpPost = new HttpPost(url);
//第三步:给httpPost设置JSON格式的参数
StringEntity requestEntity = new StringEntity(json, "utf-8");
requestEntity.setContentEncoding("UTF-8");
httpPost.setHeader("Content-type", "application/json");
// 链式太长不好排查
// httpPost.setHeader("traceid", MDC.get("traceId")); // 日志标识
httpPost.setEntity(requestEntity);
httpPost.setConfig(requestConfig);
//第四步:发送HttpPost请求,获取返回值
return httpClient.execute(httpPost, responseHandler); //调接口获取返回值时,必须用此方法
} finally {
try {
httpClient.close();
} catch (IOException e) {
logger.warn("HttpPostWithJson|{}", e.getMessage());
}
}
}
}