博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HttpClient 如何设置超时时间
阅读量:5016 次
发布时间:2019-06-12

本文共 1252 字,大约阅读时间需要 4 分钟。

今天分享一个巨坑,就是 HttpClient。这玩意有多坑呢?就是每个版本都变,近日笔者深受其害。

先看一下代码,我要发送请求调用一个c++接口。

public static String doPostWithJSON(String url, String json) throws Exception {    CloseableHttpClient client = HttpClients.createDefault();    HttpPost httpPost = new HttpPost(url);    httpPost.setHeader("Content-Type","application/json;charset=UTF-8");    StringEntity se = new StringEntity(json,  Charset.forName("UTF-8"));    se.setContentType("application/json");    httpPost.setEntity(se);    CloseableHttpResponse response =  client.execute(httpPost);    HttpEntity entity = response.getEntity();    String result = EntityUtils.toString(entity, "UTF-8");    return result;}

嗯,坑爹的地方来了,这个玩意发送请求,没设置超时时间,只要不响应,他能一直在这等着,这谁能受得了。

我要加个超时时间。
第二个大坑来了。
我记得以前设置超时时间是这样的。

client.setConnectionTimeout(10000); client.setTimeout(10000);

我发现,特么没这个方法。

于是查阅资料。发现HttpClient太善变了。每个版本都变api。
4.3版本是这样的

httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,10000);httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,10000);

4.3以后是这样的。

RequestConfig requestConfig =  RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(10000).build();httpGet.setConfig(requestConfig);

最后我根据我的版本,选了4.3的那种方式,解决问题。

转载于:https://www.cnblogs.com/jichi/p/11331485.html

你可能感兴趣的文章
[Scrum]2010/12/28 —— 第一天!
查看>>
ASP.NET MVC模式 温习(一)排除MVC模式误区
查看>>
Mysql的read_only 只读属性说明 (运维笔记)
查看>>
DOCKER 从入门到放弃(五)
查看>>
Python 多线程学习
查看>>
appcan官方ajax
查看>>
获取NVIDIA显卡的温度
查看>>
Dijkstra算法
查看>>
Deep Learning 9: Performance
查看>>
面试题61 把二叉树打印成多行
查看>>
C#例子 易懂故事 接口 委托 事件 异步通知 好玩.
查看>>
[转]Windows Shell 编程 第十一章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987992】...
查看>>
修改presto新版源码让他支持redash数据库
查看>>
Javascript的书写位置
查看>>
树-线索二叉树
查看>>
JAVA遇见HTML——Servlet篇:Servlet基础
查看>>
第二章 Vue快速入门--20 品牌案例-完成品牌列表的添加功能+ 21 品牌案例-根据Id完成品牌的删除...
查看>>
Java单例模式
查看>>
重温WCF之消息契约(MessageContract)(六)
查看>>
Excel2007制作直方图和正态分布曲线图
查看>>