我正在尝试使用HttpURLConnection下载jpg并遇到一个非常特殊的错误。
这是网址: http://www.vh1.com/sitewide/promoimages/shows/m/my_antonio/video/supertrailer/seg_1/320x240.jpg
如果您在浏览器中打开它,您将看到图像。
然而,当我使用HttpURLConnection时,我没有得到图像...... 我得到的是一个301,奇怪的是,它重定向到http://wap.vh1.com
所以
con.setInstanceFollowRedirects(true);
//additional stream code here to go and get the stuff found in con
继续从wap.vh1.com下载文本,而不是您在浏览器中看到的jpg。
我猜测有一些标题怪异导致这种情况,但我并不是最不知道主机期望看到什么,以便将我重定向到重定向浏览器的位置(和卷曲)和wget以及我能想到的其他一切事项。)
我只是准备自己开枪了,所以,如果你帮助我,你将会阻止我6岁的女儿无父亲。
答案 0 :(得分:4)
网站根据用户代理重定向您。在打开连接之前添加它,
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");
答案 1 :(得分:1)
服务器似乎将您的请求解释为来自移动设备,可能基于User-Agent标头。这就是您重定向到移动网站的原因。尝试明确设置User-Agent。
答案 2 :(得分:0)
虽然我无法帮助您解决具体问题,但我会这样做:
(我怀疑该网站会根据用户代理标题或类似内容筛选请求)
答案 3 :(得分:0)
为了获得更大的灵活性,您可以使用http commons libraries,它通过log4j为 wire 提供了很好的调试支持...
此外,可以轻松设置用户代理和更多请求参数。
有关详细信息,请参阅their tutorial。
答案 4 :(得分:0)
java.net包不支持开箱即用的许多功能(如自动保存和发送cookie)。使用Apache的httpClient而不是