我正在尝试使用jsoup访问页面http://www.betbrain.com,但这给了我错误。任何人都知道我该如何解决这个问题?307
String sURL = "http://www.betbrain.com";
Connection.Response res = Jsoup.connect(sURL).timeout(5000).ignoreHttpErrors(true).followRedirects(true).execute();
我正在尝试使用jsoup访问页面http://www.betbrain.com,但这给了我错误。任何人都知道我该如何解决这个问题?307
String sURL = "http://www.betbrain.com";
Connection.Response res = Jsoup.connect(sURL).timeout(5000).ignoreHttpErrors(true).followRedirects(true).execute();
HTTP 状态代码307
不是错误,它是表示服务器正在临时重定向到另一个页面的信息。
有关 HTTP 状态代码的信息,请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html。
response
从您返回的request
值保存标头内的重定向值。
要获取标头值,您可以这样:
String[] headerValues = res.headers().values().toArray(new String[res.headers().values().size()]);
String[] headerKeys = res.headers().keySet().toArray(new String[res.headers().keySet().size()]);
for (int i = 0; i < headerValues.length; i++) {
System.out.println("Key: " + headerKeys[i] + " - value: " + headerValues[i]);
}
你当然需要你自己的代码,因为你需要你的response
.
现在,当您查看写入控制台的标头时,您将看到一个键:
Location
其中有一个value
。http://www.betbrain.com/?attempt=1
这是您要重定向到的 URL,因此您可以执行以下操作:
String newRedirectedUrl = res.headers("location");
Connection.Response newResponse = Jsoup.connect(newRedirectUrl).execute();
// Parse the response accordingly.
我不确定为什么 jsoup 没有正确遵循这个重定向,但它似乎与 HTTP 重定向的标准 Java 实现有关。