1

根据 Apache 文档,在其套接字上使用的 2 个超时如下:

CoreConnectionPNames.SO_TIMEOUT='http.socket.timeout':以毫秒为单位定义套接字超时(SO_TIMEOUT),这是等待数据的超时时间,或者换句话说,两个连续数据包之间的最大不活动时间)。超时值为零被解释为无限超时。此参数需要 java.lang.Integer 类型的值。如果未设置此参数,则读取操作不会超时(无限超时)。

CoreConnectionPNames.CONNECTION_TIMEOUT='http.connection.timeout':确定建立连接之前的超时时间(以毫秒为单位)。超时值为零被解释为无限超时。此参数需要 java.lang.Integer 类型的值。如果未设置此参数,则连接操作不会超时(无限超时)。

假设我将两者都设置为 5s。如果我在慢速服务器上执行 HTTP GET 请求,会发生以下情况: 连接在 5 秒内完成。(CONNECTION_TIMEOUT 未触发)IP 数据包每 4 秒不断滴流(SO_TIMEOUT 未触发)但是我的 HTTP GET 或 PUT 可能需要几分钟才能有效完成。有没有办法为我的整体 GET 或 PUT 请求设置超时,以便我可以通知用户和/或放弃。

4

0 回答 0