赞助商

java – 如何在Apache http客户端中设置连接超时?

发布时间:2019-05-15 发布网站:脚本之家
脚本之家收集整理的这篇文章主要介绍了java – 如何在Apache http客户端中设置连接超时?脚本之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > With Apache HttpClient,why isn’t my connection timeout working?3
我想使用 HTTPClient运行线程安全的异步HTTP请求.我注意到它不尊重我的CONNECTION_TIMEOUT参数.

代码是ColdFusion / Java混合.

client = loader.create("org.apache.http.impl.nio.client.DefaultHttpAsyncClient").init();
CoreConnectionPNames = loader.create("org.apache.http.params.CoreConnectionPNames");

client.getParams()
    .setIntParameter(JavaCast("string",CoreConnectionPNames.SO_TIMEOUT),10)
    .setIntParameter(JavaCast("string",CoreConnectionPNames.CONNECTION_TIMEOUT),10);

client.start();

request = loader.create("org.apache.http.client.methods.HttpGet").init("http://www.google.com");
future = client.execute(request,javacast("null",""));

try {
 response = future.get();
}
catch(e any) {}

client.getConnectionManager().shutdown();

无论我为CONNECTION_TIMEOUT提供什么,请求总是返回200 OK.检查下面的输出.

>如何设置有效的连接超时?
> CONNECTION_TIMEOUT是否做任何事情?

产量

200 OK http://www.google.com/

200 OK http://www.google.com/

[snip]

5 requests using Async Client in: 2308 ms

解决方法

apache的HttpClient的文档很多.在你的设置中尝试这个(对于我,版本4)
HttpConnectionParams.setConnectionTimeout(params,10000);
HttpConnectionParams.setSoTimeout(params,10000);

... set more parameters here if you want to ...

SchemeRegistry schemeRegistry = new SchemeRegistry();

.. do whatever you ant with the scheme registry here ...

ThreadSafeClientConnManager connectionManager = new ThreadSafeClientConnManager(params,schemeRegistry);

client = new DefaultHttpClient(connectionManager,params);

总结

以上是脚本之家为你收集整理的java – 如何在Apache http客户端中设置连接超时?全部内容,希望文章能够帮你解决java – 如何在Apache http客户端中设置连接超时?所遇到的程序开发问题。

如果觉得脚本之家网站内容还不错,欢迎将脚本之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:76874919,请注明来意。
标签: