HttpClient超时时间 timeout
转自:http://www.cnblogs.com/chuhanlong/p/5312166.html
HttpClient在使用中有两个超时时间,是一直接触和使用的,由于上次工作中使用httpClient造成了系统悲剧的情况,特地对它的两个超时时间进行了小小的测试,在这里记录下。
测试版本为HttpClient——3.1一:连接超时:connectionTimeout1:指的是连接一个url的连接等待时间。2:设置方法为:public class TestHttpClientMain {
/**
* @param args
*/
public static void main(String[] args) {
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(
“http://test.com“);
client.getHttpConnectionManager().getParams()
.setConnectionTimeout(3000);
client.getHttpConnectionManager().getParams().setSoTimeout(3000);
try {
int statusCode = client.executeMethod(method);
System.out.println(statusCode);
byte[] responseBody = null;
responseBody = method.getResponseBody();
String result = new String(responseBody);
System.out.println(result);
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3:测试的时候,将url改为一个不存在的url:“http://test.com”4:超时时间3000ms过后,系统报出异常。org.apache.commons.httpclient.ConnectTimeoutException: The host did not accept the connection within timeout of 3000 ms
at org.apache.commons.httpclient.protocol.ReflectionSocketFactory.createSocket(ReflectionSocketFactory.java:155)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:125)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
二:读取数据超时:soTimeout1:指的是连接上一个url,获取response的返回等待时间2:设置方法public class TestHttpClientMain {
/**
* @param args
*/
public static void main(String[] args) {
HttpClient client = new HttpClient();
HttpMethod method = new GetMethod(
“http://localhost:8080/firstTest.htm?method=test“);
client.getHttpConnectionManager().getParams()
.setConnectionTimeout(3000);
client.getHttpConnectionManager().getParams().setSoTimeout(2000);
try {
int statusCode = client.executeMethod(method);
System.out.println(statusCode);
byte[] responseBody = null;
responseBody = method.getResponseBody();
String result = new String(responseBody);
System.out.println(result);
} catch (HttpException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
3:测试的时候的连接url为我本地开启的一个url,http://localhost:8080/firstTest.htm?method=test在我这个测试url里,当访问到这个链接时,线程sleep一段时间,来模拟返回response超时。@RequestMapping(params = "method=test") //<——②public String testMethod(ModelMap model) {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(“call testMethod method.”);
model.addAttribute(“name”, “test method”);
return “test”;
}
4:将读取response返回超时时间设的时间比那个sleep时间短之后,运行程序给出异常:java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
HttpClient 4 和 HttpClient 3 设置超时
HttpClient 4:
连接超时:
httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,60000);
// 或者
HttpConnectionParams.setConnectionTimeout(params,6000);
读取超时:
httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,60000);
// 或者
HttpConnectionParams.setSoTimeout(params,60000);
HttpClient 3:
连接超时:
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(60000);
读取超时:
httpClient.getHttpConnectionManager().getParams().setSoTimeout(60000);
ok,以后再写httpClient这两个超时时间一定要加上,不加就很可能悲剧的了
HttpClient超时时间 timeout相关推荐
- httpClient 超时时间设置
上周乐视网cms香港接口,数据刷新缓慢.香港运营人员一直在群里反馈tv端内容不更新. 我观察了下服务器,发现请求接口耗时很久500-6000ms.之前一般都是100ms左右. 导致很多线程一直在wai ...
- golang mysql 超时_golang中mysql建立连接超时时间timeout 测试
本文测试连接mysql的超时时间. 这里的"连接"是建立连接的意思. 连接mysql的超时时间是通过参数timeout设置的. 1.建立连接超时测试 下面例子中,设置连接超时时间为 ...
- httpwebrequest超时时间timeout设置无效_【SpringBoot WEB 系列】RestTemplate 之超时设置...
[SpringBoot WEB 系列]RestTemplate 之超时设置 一般来讲我们访问外部资源时,需要做一个保护,比如最常见的添加一个超时设置,避免一直被阻塞,RestTemplate 可以通过 ...
- 如何修改Cypress 测试代码中默认的超时时间(timeout)
我使用 Cypress 对 SAP 官网进行自动化操作时,遇到了如下的错误消息: Timed out after waiting 60000ms for your remote page to loa ...
- 妙用Spring的事务超时时间timeout
1.如何设置Spring事务超时时间 在方法上加注解 @Transactional(rollbackFor= Exception.class,timeout=10) 注:timeout 单位:秒 增加 ...
- golang中mysql建立连接超时时间timeout 测试
本文测试连接mysql的超时时间. 这里的"连接"是建立连接的意思. 连接mysql的超时时间是通过参数timeout设置的. 1.建立连接超时测试 下面例子中,设置连接超时时间为 ...
- Zuul、Ribbon、Feign、Hystrix使用时的超时时间(timeout)设置问题
本文转载自:https://priesttomb.github.io/,谢谢作者的分享 文章目录 写在前面 注意! 工具 Feign + Hystrix 0. 默认基本配置 1. 不同实例分别配置 R ...
- 如何在并发中给 HttpClient 设置不同的超时时间?
咨询区 boot4life 为了能够复用 HttpClient 所打开的TCP链接,我不得不让所有的request共享一个单例,但问题来了,如果我简单的在每一次request之前修改 timeout ...
- httpclient: 设置请求的超时时间,连接超时时间等
1.为什么要设置HTTP timeout? 1.与用户操作相关的接口,如果不设置超时时间,将会出现长时间的无响应,严重影响用户体验. 2.负载很高的系统,因为大量调用耗时长的接口,导致性能急剧下降,从 ...
- HttpClient 如何设置超时时间
今天分享一个巨坑,就是 HttpClient.这玩意有多坑呢?就是每个版本都变,近日笔者深受其害. 先看一下代码,我要发送请求调用一个c++接口. public static String doPos ...
最新文章
- VC解析XML--使用CMarkup类解析XML
- 应对全球粮食危机 AI、5G与机器视觉联手“养鱼”
- SQL Server中截取字符串常用函数
- spark RDD详解及源码分析
- 机器学习笔记(十四):异常检测
- Java—switch case实现两个数的算术运算
- 学习笔记之51单片机键盘篇(非编码键盘与编码键盘、非编码键盘的扫描方式、独立键盘、矩阵键盘)
- C++新手入门学习笔记(跟着敲)
- Composite UI Application Block(Cab)比较详细的一片文章
- 还债之期末复习(预习)
- 分析和比较ABAQUS、MARC、Adina、ANSYS三种CAE软件
- 手工查杀威金病毒,完全恢复exe程序
- java.lang.UnsupportedOperationException: Required method instantiateItem was not overridden
- java水仙花数编程_水仙花数java编程实现
- Horner法则(秦九韶算法 )的程序实现
- 华为“吐出”的高端市场,小米 Ov 却吃不下
- 微信公众平台iPhone版内测开始了
- Centos7.5之Linux系统安装
- 坐在家中点击鼠标,万里之外ATM吐钞……
- 【渝粤教育】广东开放大学 数据库应用 形成性考核 (26)
热门文章
- python填充三角形颜色_python的pillow用ImageDraw.Draw.polygon如何填充半透明的颜色
- AI只调整填充色的透明度
- ERROR: Cannot uninstall ‘xxx‘. It is a distutils installed project and thus we cannot accurately
- github仓库在线新建文件夹方法备份
- python定义一个函数实现整数的幂运算_Leetcode练习(Python):第326题:3的幂:给定一个整数,写一个函数来判断它是否是 3 的幂次方。...
- 关于MD5码的一些自我总结
- 数据库中自然连接与内连接的区别
- 用于科学计算机的计算器特点是什么意思,科学计算器在线e
- 《我想吃掉你的胰脏》观后感
- 使用 spring.profiles.active 及 @profile 注解 动态化配置内部及外部配置