Jsoup:尝试访问页面时出现错误307

时间:2013-10-16 19:30:56

标签: java http jsoup

我正在尝试使用 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();

1 个答案:

答案 0 :(得分:1)

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

这是您要重定向到的网址,因此您可以执行以下操作:

String newRedirectedUrl = res.headers("location");
Connection.Response newResponse = Jsoup.connect(newRedirectUrl).execute();
// Parse the response accordingly.

我不确定为什么jsoup没有正确地遵循此重定向,但似乎它可能与HTTP重定向的标准Java实现有关。