Jsoup连接失败

时间:2014-09-08 12:42:51

标签: java http connection jsoup

我有以下几行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的线程类中,由线程执行器启动。 我的问题是,由于以下原因,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)

如果我尝试在浏览器中访问该网址,一切正常。 如果我尝试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页要解析,基于线程的解决方案会很棒,任何想法如何摆脱这些错误?

2 个答案:

答案 0 :(得分:0)

作为建议:

也许您的网址中存在编码问题 尝试使用以下内容:

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

注意:也许你只需要编码Query-String,而不是整个URL!
未经测试

请点击这里查看simmilar问题:https://stackoverflow.com/a/12476622/3887073

编辑:
也许这是服务器问题 请参阅HTTP错误502 服务暂时过载

答案 1 :(得分:0)

正如编辑Ben所说,它看起来像是502 Service Temporarily Overloaded错误。可悲的是,Jsoup不再提供有关错误的更多信息,所以我可以提前得到那条消息,但我已经得到了它。

如果我没有将最大数量的线程设置为8以上,那么它可以正常工作。非常感谢投入的人:)