[英]strange problem with java.net.URL and java.net.URLConnection
我正在尝试从URL下载图像。 我编写的过程适用于每个人,除了我们正在处理的一个内容提供商之外。
当我通过Firefox访问其JPG时,所有内容看起来都清晰(快乐的逾越节,顺便说一句)。 但是,当我使用自己的流程时,我要么:
A)得到404或
B)在调试器中,当我在URL行上设置断点(URL url = new URL(str);)时,在连接后我确实得到了一个文件,但它不是.jpg,而是一些它们是的HTML使用通用链接和内容进行制作。 不过,我没有看到重定向代码! 它回到200。
这是我的代码...
URL url = new URL(urlString);
URLConnection uc = url.openConnection();
String val = uc.getHeaderField(0);
System.out.println("FOUND OBJECT OF TYPE:" + contType);
if(!val.contains("200")){
//problem
}
else{
is = uc.getInputStream();
}
有人看到过这种性质的东西吗? 我在想,也许这是一些哑剧类型的问题,但这只是一个总的猜测……我完全感到困惑。
也许网站只是在使用某种保护措施,以防止他人热链接其图像或禁止大量下载。
他们通常检查HTTP引荐来源网址(必须来自其自己的域)或用户代理(必须是浏览器,而不是下载管理器)。 设置两个并重试。
您是否尝试过使用WireShark来确切查看正在往返的数据包? 这通常是最快的方法来了解不同之处。 那是:
然后在两个方向上对数据包进行比较和对比,我几乎保证您会在HTTP标头或流量的其他部分看到不同的内容来解释问题。
if(!val.contains("200")) // ...
首先,我建议您使用这个有用的类HttpURLConnection ,它提供方法getResponseCode()
在整个数据中搜索“ 200”表示
所有好的猜测,但我认为“正确”的答案是必须去ivan_pertrovich_ivanovich_harkovich_rostropovitch_o'neil,因为使用HttpURLConnection可以看到,实际上,在获得404之前,我首先得到了301。现在,只需从这些人那里找出他们在标题中的期望,这将使他们不太愿意重定向我。
谢谢你的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.