需要关于奇异的java.net.HttpURLConnection行为的帮助吗

需要关于奇异的java.net.HttpURLConnection行为的帮助吗,java,httpurlconnection,Java,Httpurlconnection,我试图使用HttpURLConnection下载一个jpg,但遇到了一个非常奇怪的错误 以下是网址: 如果在浏览器中打开它,您将看到该图像 但是,当我使用HttpURLConnection时,我没有得到图像。。。 我得到的是一个301,很奇怪,它重定向到 所以 继续从wap.vh1.com下载文本,而不是从浏览器中看到的jpg 我猜是有一些标题古怪导致了这一点,但我一点也不知道主机希望看到什么,以便将我重定向到与重定向浏览器相同的位置(以及curl和wget以及其他我能想到的指向它的东西) 我

我试图使用HttpURLConnection下载一个jpg,但遇到了一个非常奇怪的错误

以下是网址:

如果在浏览器中打开它,您将看到该图像

但是,当我使用HttpURLConnection时,我没有得到图像。。。 我得到的是一个301,很奇怪,它重定向到

所以

继续从wap.vh1.com下载文本,而不是从浏览器中看到的jpg

我猜是有一些标题古怪导致了这一点,但我一点也不知道主机希望看到什么,以便将我重定向到与重定向浏览器相同的位置(以及curl和wget以及其他我能想到的指向它的东西)


我正准备自杀,所以,如果你帮我,你将阻止我6岁的女儿失去父亲。

该网站基于用户代理重定向你。在打开连接之前添加此项

conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.15) Gecko/2009101600 Firefox/3.0.15");

虽然我无法帮助您解决您的具体问题,但以下是我要做的:

  • 下载、嗅探java应用程序发送的HTTP请求

  • 复制/粘贴请求,并使用telnet(或类似的工具)运行它

  • 摆弄请求头,看看行为是否改变


(我怀疑站点会根据用户代理标题或类似内容筛选请求)

为了获得更大的灵活性,您可以利用,它通过log4j对wire提供了强大的调试支持

此外,还可以轻松设置用户代理和更多请求参数


有关更多信息,请参阅。

java.net包不支持许多现成的功能(如自动保存和发送cookie)。改用Apache的

服务器似乎将您的请求解释为来自移动设备,可能基于用户代理头。这就是为什么你的手机被重定向到移动网站。尝试显式设置用户代理。

您可以发布您用于创建连接和获取URL的完整代码吗?有很多代码,它适用于所有其他URL,因此,我不愿意将文章与它混在一起。。。我将添加几行最相关的内容…似乎vh1认为您的请求来自移动设备-其他URL是否适用于图像?另一个在这种情况下有帮助的工具是Firefox的FireBug插件。我只想添加每个“有效”此处允许使用类似于桌面客户端的useragent,而不是在MacOS上明确使用Firefox:)
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.0.15) Gecko/2009101600 Firefox/3.0.15");