Jsoup + java.io.IOException:尝试加载URL http://iv4u.health/时发生太多重定向

时间:2019-01-10 09:24:00

标签: java jsoup

我正在尝试使用Jsoup库(版本1.11.3)读取域- iv4u.health 的URL正文,但出现“重定向过多”错误。以下是我正在使用的代码-

public class Example {

public static void main(String[] args) throws InterruptedException, ExecutionException {
    crawlDomain("http://iv4u.health");
}

public static void crawlDomain(String url) {
    int timeout = 30;
    RequestConfig config = RequestConfig.custom()
        .setConnectTimeout(timeout * 1000)
        .setConnectionRequestTimeout(timeout * 1000)
        .setSocketTimeout(timeout * 1000)
        .setRedirectsEnabled(false)
        .build();

    CloseableHttpClient client = HttpClientBuilder.create().setDefaultRequestConfig(config).build();
    HttpGet request = new HttpGet(url);
    CloseableHttpResponse response;
    try {
        HttpClientContext context = HttpClientContext.create();
        response = client.execute(request, context);
        int status = response.getStatusLine().getStatusCode();
        if (status >= HttpStatus.SC_MULTIPLE_CHOICES && status < HttpStatus.SC_BAD_REQUEST) {
            System.out.println(getURLBody(url));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private static String getURLBody(final String url) {
    try {
        String userAgent = "Mozilla";
        Document doc = Jsoup.connect(url)
            .userAgent(userAgent).get();
        return doc.toString();
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return null;
}
}

下面是错误的堆栈跟踪-

java.io.IOException: Too many redirects occurred trying to load URL http://iv4u.health/
at org.jsoup.helper.HttpConnection$Response.<init>(HttpConnection.java:717)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:751)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:773)
at ....

请帮助我解决这个问题。任何帮助将不胜感激。 该代码有时会起作用(通常是第一次)

2 个答案:

答案 0 :(得分:1)

尝试使用带有“ http://iv4u.health”的网址值。它对我有用,请尝试一下。

答案 1 :(得分:0)

似乎与网络设置有关。您是否尝试过在Mozilla或Chrome浏览器中浏览相同的网址?

下面的代码对我来说很好(使用jsoup 1.11.3):

public static void main(String[] args) {
    try {
        String url = "http://iv4u.health/";
        String userAgent = "Mozilla";
        Document doc = Jsoup.connect(url)
            .userAgent(userAgent).get();
        System.out.println(doc.toString());
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}