Java 为什么使用Jsoup连接到特定网页时会出现404错误?

Java 为什么使用Jsoup连接到特定网页时会出现404错误?,java,dom,http-status-code-404,jsoup,connect,Java,Dom,Http Status Code 404,Jsoup,Connect,我正试图从Metacritic获取一些视频游戏数据,我一直在这个网页上发现404错误: http://www.metacritic.com/game/playstation-2/ico connect命令非常基本: Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36").timeou

我正试图从Metacritic获取一些视频游戏数据,我一直在这个网页上发现404错误:

http://www.metacritic.com/game/playstation-2/ico
connect命令非常基本:

Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.110 Safari/537.36").timeout(0).get();

在我尝试连接的Metacritic上的数百个类似视频游戏网页中,这是唯一一个每次都返回404的网页。知道为什么吗?

服务器返回404

$ curl -I http://www.metacritic.com/game/playstation-2/ico
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=UTF-8
Server: Apache
X-Varnish: 868026494
Date: Tue, 10 Sep 2013 15:26:21 GMT
Connection: keep-alive
它还返回非404外观的内容这一事实并不影响Jsoup;它只是查看服务器在HTTP头中给出的代码

欢迎来到蹩脚的“什么东西是怎么工作的?!”互联网世界有趣的是,
curl-Ihttp://www.metacritic.com/game/playstation-2/SDKFJSDF
返回
200 OK
的HTTP头代码,但显示内容为404的页面。我有没有提到互联网上全是废话


您可以通过调用
连接.Request
对象来忽略这些错误。

我意识到现在回答您的问题已经很晚了,但我今天遇到了这个问题,并最终意识到Metacritic在哪里出了问题。看起来他们有一个apache配置,可以在请求*ico文件(或大多数图像)时提供404错误。他们可能有这样的设置:

RewriteRule(js | ico | gif | jpg | png | css | xml)$-[R=404,L,NC]

他们在延期前错过了一段时间。因此,任何以这些文字结尾的内容,即使它们是游戏名称的一部分,都会返回404内容。证明:

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foojpg'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foojpgz'
HTTP/1.1 200 OK

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/fooxml'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foocss'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/foojs'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/fooico'
HTTP/1.1 404 Not Found

$ curl -I -H 'User-Agent: Mozilla...' 'http://www.metacritic.com/game/pc/fooicoo'
HTTP/1.1 200 OK

我觉得这有点有趣:)不管怎样,谜团已经解开了。

我无法用Chrome或同样的浏览器重现这一点。当我在浏览器中输入URL时,它工作正常。但是,当我尝试使用Jsoup连接到它时,它会给我一个404。无论是谁创建了该网站(或该页面),都是在开玩笑。我该如何解决这个问题(我刚刚发现下面的页面也出现了这种情况:---你能确认吗?是的(首先它会给
301重定向)http://www.metacritic.com/game/pc/tropico
,但那是404的)。我将更新我的答案以找到解决办法。