我正在尝试使用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 ....
请帮助我解决这个问题。任何帮助将不胜感激。 该代码有时会起作用(通常是第一次)
答案 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();
}
}