Eclipse中的Java Jsoup程序抛出java.net.SocketTimeoutException:connect timed out

时间:2014-01-07 19:27:40

标签: java eclipse jsoup

我正在使用Eclipse编写一个简单的Jsoup程序,但是当我尝试运行该程序并向我的程序添加更多步骤时,我收到的错误为java.net.SocketTimeoutException: connect timed out

此代码可以正常工作:

public static void main(String[] args) {
    Document doc;
    try {
        doc = Jsoup.connect("http://google.com").get();
        System.out.println("doc is = " + doc);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

我得到一些XML数据作为输出。

现在我将此程序更改为:

public static void main(String[] args) {
    Document doc;
    try {
        // need http protocol
        doc = Jsoup.connect("http://google.com").get();
        System.out.println("doc is = " + doc);

        // get page title
        String title = doc.title();
        System.out.println("title : " + title);

        // get all links
        Elements links = doc.select("a[href]");
        for (Element link : links) {
            // get the value from href attribute
            System.out.println("\nlink : " + link.attr("href"));
            System.out.println("text : " + link.text());
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
}

然后我得到例外:java.net.SocketTimeoutException: connect timed out

似乎我需要设置超时选项,请告诉我在eclipse中我能做到的地方?

我在下面提到了SO帖子,但仍面临同样的问题,我之间也没有任何代理来访问互联网:

Sometimes java.net.SocketTimeoutException: Read timed out. Sometimes not

Exception in thread “main” java.net.SocketTimeoutException: connect timed out at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)

2 个答案:

答案 0 :(得分:2)

您可以通过Connection

指定超时
Connection connection = Jsoup.connect("http://google.com");
connection.timeout(5000); // timeout in millis
doc = connection.get();

答案 1 :(得分:1)

超时为零被视为无限超时。

Jsoup.connect("http://google.com").timeout(0).get();