如果你试图找到一个不存在的tumblr页面,我想抓住重定向的tumblr站点。如果我将URL放在浏览器中,我会进入该重定向网站。然而,Jsoup只是给了一个" HTTP错误提取URL。状态= 404"错误。有什么建议吗?
String userAgent = "Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6";
Document doc = Jsoup.connect("http://www.faszokvagyunk.tumblr.com").userAgent(userAgent).followRedirects(true).get();
谢谢。
答案 0 :(得分:0)
你的代码似乎处理其他类型的重定向就好了,但是tumblr会得到一个导致404状态的404页面,例外情况可能有很多原因:
我不知道这个解决方案是否可以帮助你,但是,你实际上可以通过将方法链接如下来指示你的JSOUP连接忽略HttpErrors(这至少允许你验证http错误):
Document doc = Jsoup.connect("http://oddhouredproductivity.tumblr.com/tagged/tips").userAgent(userAgent).followRedirects(true).ignoreHttpErrors(true).get();
ignoreHttpErrors 指示连接在遇到404,500等错误状态代码时不会抛出Http错误。
连接ignoreHttpErrors(boolean ignoreHttpErrors)
配置 连接到发生HTTP错误时不抛出异常。 (4xx - 5xx,例如404或500)。默认情况下这是假的; IOException是 如果遇到错误则抛出。如果设置为true,则响应为 填充错误正文,状态消息将反映出来 错误。
参数:ignoreHttpErrors - - 如果HTTP错误应该为false(默认值) 被忽略了。
返回:此连接,用于链接
如果将ignoreHttpErrors设置为true,那么您将获得Document。如果没有,那么Document将为null。
我还遇到了这个site,它可能实际上展示了实际的tumblr重定向。您可能希望使用该页面中的URL来进行测试,因为它们是正确的tumblr重定向。如果您查看此页面的检索文档,那么您将看到一个JavaScript直接函数,该函数在3秒后触发,如下所示:
//redirect to new blog
setTimeout( redirectTumblr, 3000 );
function redirectTumblr() {
location.replace('http://oddhour.tumblr.com' + location.pathname);
}
当我连接到您在问题中提供的URL时。我看到404页面,并且Document by connection中返回的404页面的内容不包含重定向的迹象(就像其他页面一样)。