gpt4 book ai didi

java - DefaultHttpClient 单例实例超时

转载 作者:行者123 更新时间:2023-11-30 09:30:26 24 4
gpt4 key购买 nike

我正在使用 DefaultHttpClientsingleton 实例与 PoolingClientConnectionManager 一起执行大量(每秒多次)HTTP 操作以多线程的方式。我的代码基本上是:

final HttpParams httpClientParams = new BasicHttpParams();
httpClientParams.setParameter("http.protocol.version", HttpVersion.HTTP_1_1);
HttpConnectionParams.setConnectionTimeout(httpClientParams, 700);
HttpConnectionParams.setSoTimeout(httpClientParams, 700);
DefaultHttpClient client = new DefaultHttpClient(poolingClientConnectionManager, httpClientParams);

然后我将从多个线程并行访问 client 对象。

我的问题是,超时没有得到遵守,我的 HTTP 请求花费的时间比指定的 700 毫秒长得多。

  • 像我上面那样在客户端上设置超时是否安全?
  • 许多 并行请求使用 DefaultHttpClient 的单例实例是否安全?

最佳答案

  • 像我上面那样在客户端上设置超时是否安全?

是的,它是安全的。但是,HttpClient 级参数表示所有请求继承的默认 设置。人们不应该在运行时干预这些设置。通常最好使用请求级别参数来配置单个请求。

  • 对多个并行请求使用 DefaultHttpClient 的单例实例是否安全?

不仅安全而且强烈推荐。通过共享相同的 HttpClient 实例,可以通过重新使用持久连接的共享池来更有效地执行各个请求。

另请确保您对超时行为的期望是正确的。超时值表示两个连续 i/o 操作之间的最长不活动时间,而不是最大总请求执行时间。

关于java - DefaultHttpClient 单例实例超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13286464/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com