【问题标题】:Jsoup connection failedJsoup 连接失败
【发布时间】:2014-09-08 12:42:51
【问题描述】:

我有以下几行java代码:

        d = Jsoup
                .connect(getUrl)
                .timeout(5000)
                .userAgent(
                        "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:31.0) Gecko/20100101 Firefox/31.0")
                .followRedirects(true)
                .get();

在实现 Runnable 并由 Thread Executor 启动的线程类中。 我的问题是,Jsoup 不断触发异常是因为:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=502, URL=http://sub.domain.de:8080/ws/Codes/Texts-Listen;Stud-Sets;name;AAFF-B?template=UNEinzelGru&weeks=39&days=&periods=3-64&Width=0&Height=0

    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:449)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:424)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:178)
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:167)
    at com.noncomercial.parsingthread.Threads.VParserThread.run(VThread.java:62)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

如果我尝试在浏览器中访问 URL,一切正常。 如果我尝试一个示例 jsoup 连接,例如:

Document d = Jsoup.connect("http://sub.domain.de:8080/ws/Codes/Texts-Listen;Stud-Sets;name;AAFF-B?template=UNEinzelGru&weeks=39&days=&periods=3-64&Width=0&Height=0").get();

它也不会触发异常。我真的不知道我的线程或连接有什么问题。

任何想法:-/?

//编辑: 好吧,这很有趣: 当我开始在此连接上使用断点调试我的代码时,它神奇地不再发生了。

所以我想到了服务器端同时存在多个连接的问题......

我将我的 ExecutorService 设置为: executor = Executors.newFixedThreadPool(1);所以一次只使用一个线程。它从 10 分钟开始运行并且没有发生错误...

好的,我认为要解析的页面超过 500 个,基于线程的解决方案会很棒,有什么想法可以摆脱这些错误吗?

【问题讨论】:

    标签: java http connection jsoup


    【解决方案1】:

    作为建议:

    您的网址可能存在编码问题。
    尝试使用以下内容:

    URLEncoder.encode(queryString, "UTF-8") 
    

    注意:也许您只需要编码查询字符串,而不是整个 URL!
    未测试

    看到这里有类似的问题:https://stackoverflow.com/a/12476622/3887073

    编辑:
    可能是服务器问题。
    请参阅 HTTP 错误 502 服务暂时过载

    【讨论】:

    • 嘿本,谢谢你的想法。我试过了,但 URL 格式正确。你看到我的编辑了吗?我沿着兔子洞走了一会儿,我认为这可能是另一边的tomcat的问题。如果我将工作线程减少到 7 或 8 个,它工作正常。仅超过 8 个线程的数字就会破坏一切。我仍然不知道这是我这边的小问题,还是服务器的小问题,但现在它工作到目前为止,但我会研究更多
    • @Smoki - 我同意 Ben 的更新。 IMO,最有可能的解释是您试图同时用太多请求来重载服务器。解决方案:不要。一次只看一页,耐心等待。
    【解决方案2】:

    正如编辑 Ben 所说,它看起来像 502 Service Temporarily Overloaded 错误。遗憾的是,Jsoup 没有提供有关该错误的更多信息,因此我本可以更早地收到该消息,但我已经知道了。

    如果我没有将最大线程数设置为 8 以上,它工作正常。非常感谢各位的意见:)

    【讨论】:

      猜你喜欢
      • 2019-05-23
      • 2014-10-12
      • 1970-01-01
      • 1970-01-01
      • 2013-04-10
      • 2018-07-14
      • 2021-01-19
      • 2018-12-19
      • 2017-06-06
      相关资源
      最近更新 更多