【问题标题】:HttpURLConnections ignore timeouts and never returnHttpURLConnections 忽略超时并且永不返回
【发布时间】:2010-10-12 16:55:56
【问题描述】:

在尝试从 HttpURLConnection 打开 InputStream 时,我们从某些服务器随机得到一些意外结果。这些服务器似乎会接受连接并使用“保持活动”标头进行回复,这将使 Socket 保持打开状态,但不允许将数据发送回流。

这种情况使多线程爬虫的尝试有点“复杂”,因为如果某个连接被卡住,运行它的线程将永远不会返回......否认它的池的完成源于控制器认为一些线程仍在工作。

是否有某种方法可以读取连接响应标头以识别“保持活动”的答案并避免尝试打开流??

【问题讨论】:

    标签: java timeout httpurlconnection


    【解决方案1】:

    我不确定我在这里缺少什么,但在我看来你只需要getHeaderField()

    【讨论】:

    • 我会尝试一下,看看我能得到什么,如果我能从中评估出某个答案!谢谢。
    【解决方案2】:

    除了“连接超时”之外,您是否尝试设置“读取超时”?

    http://java.sun.com/j2se/1.5.0/docs/api/java/net/URLConnection.html#setReadTimeout%28int%29

    【讨论】:

    • 是的...我们已经设置了两个超时并且都被忽​​略了。我们发现这个问题是一个报告的错误......所以我们正在尝试解决它。就像...如果我们能够获得该标头响应并将其隔离...我们不会打开流。 =)
    • @Juan Manuel:你能把报告的错误的链接贴出来吗?
    • @talonx:我在 2 年前就遇到过这个错误,我想那个错误已经修复了......呵呵。无论哪种方式,都不记得报告网址。对不起
    猜你喜欢
    • 2016-06-14
    • 2019-03-23
    • 2010-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    相关资源
    最近更新 更多