当前位置: 首页 > 面试题库 >

Apache HttpClient超时

孙才捷
2023-03-14
问题内容

有没有办法为整个执行指定超时时间HttpClient

我尝试了以下方法:

httpClient.getParams().setParameter("http.socket.timeout", timeout * 1000);
httpClient.getParams().setParameter("http.connection.timeout", timeout * 1000);
httpClient.getParams().setParameter("http.connection-manager.timeout", new Long(timeout * 1000));
httpClient.getParams().setParameter("http.protocol.head-body-timeout", timeout * 1000);

它实际上可以正常工作,除非远程主机发送回数据(即使以一字节/秒的速度),也将永远读取!但是无论主机是否响应,我都希望在10秒内中断连接。


问题答案:

当前无法设置这种 最大请求持续时间 :基本上,您想说 我不在乎任何特定的请求阶段是否超时,但是整个请求的持续时间不得超过15秒 (例如) 。

最好的选择是运行一个单独的计时器,当计时器到期时,获取HttpClient实例使用的连接管理器并关闭连接,这将终止链接。让我知道这是否适合您。



 类似资料:
  • 我的Java代码使用共享的ApacheHttpClient 4.4。1.我将每个POST请求级别上的连接超时、套接字超时和连接请求超时设置为100毫秒。它大部分时间都很好用。然而,在大量请求(压力测试)时,HttpClient忽略这些超时;请求可能需要20秒或更长时间。这是我的密码: 在某些情况下,我会得到如下日志记录: 2018-10-26 14:18:45496[my-thread-1]调试c

  • 我想做的是用httpclient下载一个文件。目前我的代码如下。 我的下载URL如下所示:http://example.com/file/afz938f348dfa3 正如你可以看到没有扩展名的文件(至少在网址)然而,当我去一个正常的浏览器网址,它下载文件asdasdaasda.txt或asdasdasdsd.pdf(名称是不同的url和extenstion并不总是相同的,取决于我试图下载什么)。

  • 我试图使用HttpClient将“Accept Encoding”参数添加到我的HTTP头中,如“gzip,deflate”。代码如下所示。但是,我在响应中遇到以下错误,无法添加header参数。响应不包含添加的标题字段 错误:内部服务器错误

  • 我正在研究我们公司开发的一个应用程序。它使用Apache HttpClient库。在源代码中,它使用类来创建连接到服务器的实例。 我想了解ApacheHttpClient,我已经详细介绍了这组示例。所有示例都使用而不是。因此我认为是的扩展版本。如果是这种情况,我有两个问题: 这两者有什么区别? 我的新开发建议使用哪个类?

  • 当我们所有数据库的 SQL 语句是通过子查询方式完成,对于超时的控制往往很容易被大家忽略。因为大家在代码里看不到任何调用 set_timeout 的地方。实际上 PostgreSQL 已经为我们预留好了两个设置。 请参考下面这段配置: location /postgres { internal; default_type text/html; set_by_lua_blo

  • 你是否正遇到网络或 CPU 的瓶颈? 验证客户端和托管redis-server的服务器上支持的最大带宽。如果有请求被带宽限制,则它们需要更长时间才能完成,从而可能导致超时。 同样,验证您没有在客户端或服务器框上获得CPU限制,这将导致请求等待CPU时间,从而超时。 有没有命令需要在 redis 服务器上处理很长时间? 可能有一些命令需要很长时间才能在redis服务器上处理,导致请求超时。 长时间

  • 套房级 套件级超时可应用于整个测试“套件”,或通过其禁用this.timeout(0)。这将由所有嵌套套件和不覆盖该值的测试用例继承。 describe('a suite of tests', function() { this.timeout(500); it('should take less than 500ms', function(done){ setTimeout(done, 30

  • 我使用命令生成器在Jenkins服务器上运行单元测试。phar exec“codecept运行单元应用程序/模型”-vvv并获取以下错误: [Symfony\Component\Process\Exception\ProcessTimedOutException] 进程“codecept运行单元应用程序/模型”超过了1800秒的超时时间。 我如何修复它并允许测试花费更多的时间?谢谢