public static <T> T executeGetRequest(String url,Map<String,String> headers,Map<String,String> params,HttpEntityHandler<T> handler){
// 创建发起请求的 client对象
CloseableHttpClient client = HttpClients.createDefault();
// 服务端响应对象
CloseableHttpResponse response = null;
try{
String effectiveUrl = url;
// 由于发送Get请求,所以把参数附加到url上
if(params != null && params.size() > 0){
// 这里使用uriBuilder构建查询字符串
URIBuilder builder = new URIBuilder();
for(Map.Entry<String,String> entry : params.entrySet()){
builder.addParameter(entry.getKey(), entry.getValue());
}
effectiveUrl += builder.toString();
}
HttpGet request = new HttpGet(effectiveUrl);
// 设置请求连接超时时间
request.setConfig(DEFAULT_REQUEST_CONFIG);
// 设置请求头
if(headers != null){
for(Map.Entry<String,String> entry : headers.entrySet()){
request.addHeader(entry.getKey(),entry.getValue());
}
}
// 发起http请求,并返回响应
response = (CloseableHttpResponse) client.execute(request);
// 处理服务端响应
T object = handler.handleHttpEntity(response);
return object;
}catch(Exception e){
logger.error("http post请求失败",e);
throw new RuntimeException("http get请求失败",e);
}finally{
if(response != null){
try {
response.close();
} catch (IOException e) {
logger.error("http get请求后,关闭输入流失败 ",e);
}
}
if(client != null){
try {
client.close();
} catch (IOException e) {
logger.error("http get请求后,关闭连接失败 ",e);
}
}
}
}
发送http get请求,并返回相应内容
最新推荐文章于 2024-08-06 17:13:24 发布