【发布时间】:2011-06-02 10:40:08
【问题描述】:
当我尝试使用 HttpClient 连接时遇到问题 到一个网址。即使在我设置之后,http 连接也需要更长的时间才能超时 连接超时。
int timeoutConnection = 5000;
HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
int timeoutSocket = 5000;
HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);
它在大多数情况下都能完美运行。但是,每隔一段时间,http 连接就会永远运行并忽略setconnectiontimeout,尤其是当手机连接到 wifi 并且手机处于空闲状态时。
所以在手机空闲后,我第一次尝试连接时,http 连接会忽略setconnectiontimeout 并永远运行,在我取消它并重试后,它每次都像魅力一样工作。但是那一次不起作用它会创建一个threadtimeout 错误,我尝试使用不同的线程,它可以工作,但我知道该线程运行了很长时间。
我知道 wifi 在空闲时进入睡眠状态,但我不明白为什么它会忽略 setconnectiontimeout。
任何人都可以提供帮助,我真的很感激。
【问题讨论】:
-
你说的是什么平台?
-
HTTP 连接可能会“忽略”它的超时,因为它真的认为它已连接,例如最初的握手成功了,但管道(或者在你的情况下,空气)中没有任何东西。也许您的手机倾向于继续接受连接,但在空闲时立即忘记它们。捕获并检查在此问题发生之前交换的各个帧可能会提供更多信息。
标签: java android timeout apache-httpclient-4.x