HttpClient请求 /** * 请求,只请求一次,不做重试 * * @param url 请求的地址 * @param data 提交的数据 * @param connectTimeoutMs 连接超时时间 * @param readTimeoutMs 读取超时时间 * @return * @throws Exception
/**
* 请求,只请求一次,不做重试
*
* @param url 请求的地址
* @param data 提交的数据
* @param connectTimeoutMs 连接超时时间
* @param readTimeoutMs 读取超时时间
* @return
* @throws Exception
*/
public String requestOnce(String url, String data, int connectTimeoutMs, int readTimeoutMs) throws Exception {
BasicHttpClientConnectionManager connManager;
//设置连接管理器,BasicHttpClientConnectionManager对象线程安全,每次只管理一个连接
connManager = new BasicHttpClientConnectionManager (
RegistryBuilder.
create()
.register("http", PlainConnectionSocketFactory.getSocketFactory())
.register("https", SSLConnectionSocketFactory.getSocketFactory())
.build(),
null,
null,
null
);
//构建客户端
HttpClient httpClient = HttpClientBuilder.create()
.setConnectionManager(connManager)
.build();
HttpPost httpPost = new HttpPost(url);
//设置请求和传输超时时间
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(readTimeoutMs).setConnectTimeout(connectTimeoutMs).build();
httpPost.setConfig(requestConfig);
//设置请求头和请求数据编码格式
StringEntity postEntity = new StringEntity(data, "UTF-8");
httpPost.addHeader("Content-Type", "text/xml");
httpPost.addHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows XP)");
httpPost.setEntity(postEntity);
//发送请求,接收请求数据,将请求数据转为string
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
return EntityUtils.toString(httpEntity, "UTF-8");
}
