package com.java;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
/**
* @author gmy
* @version 1.0
* @date 2021/7/29 16:22
* HttpClient连接池及Http请求参数设置,例如请求超时时间
*/
public class HttpConfigTest {
public static void main(String[] args) {
// 创建连接池管理器
PoolingHttpClientConnectionManager cm=new PoolingHttpClientConnectionManager();
//设置最大连接数
cm.setMaxTotal(100);
// 设置每个主机的最大连接数
cm.setDefaultMaxPerRoute(10);
// 使用连接池管理器发起请求
doGet(cm);
doGet(cm);
}
private static void doGet(PoolingHttpClientConnectionManager cm){
// 不是每次创建新的HttpClient,而是从连接池中获取HttpClient对象
CloseableHttpClient httpClient= HttpClients.custom().setConnectionManager(cm).build();
HttpGet httpGet=new HttpGet("http://www.itcast.cn");
// 配置请求参数信息
RequestConfig config=RequestConfig.custom()
.setConnectTimeout(1000) //创建连接的最长时间,单位是毫秒
.setConnectionRequestTimeout(500) //设置获取连接的最长时间,单位是毫秒
.setSocketTimeout(10*1000) //设置数据传输的最长时间,单位是毫秒
.build();
//给请求设置请求信息
httpGet.setConfig(config);
// 使用HttpClient发起请求,获取response
CloseableHttpResponse response=null;
try {
response = httpClient.execute(httpGet);
// 解析响应
if (response.getStatusLine().getStatusCode() == 200){
String content = EntityUtils.toString(response.getEntity(),"utf8");
System.out.println(content.length());
}
} catch (IOException e) {
e.printStackTrace();
}finally {
// 关闭response
try {
if (null != response) {
response.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
Http请求(四)-HttpClient连接池及Http请求参数设置
最新推荐文章于 2023-05-18 15:36:37 发布