| 
 在用HttpURLConnection 读取网络图片时候 出现 404 错误 求大神指点 ? http://www.offerwow.cn/image/offerwow_staging/logo/1406880082963.jpg   
                       URL url = new URL("http://www.offerwow.cn/image/offerwow_staging/logo/1406880082963.jpg");
			HttpURLConnection con = (HttpURLConnection) url.openConnection();
			con.setDoInput(true);
			con.setDoOutput(true);
			con.setReadTimeout(30000);
			con.setInstanceFollowRedirects(true);
			con.addRequestProperty("Cache-Control", "no-cache");
			con.connect();
			// 在指定目录创建一个空文件并获取文件对象
			File file = new File("H:\a.jpg");
			if (file.exists()) {		file.delete();	}else{			file.createNewFile();}
			// 获取一个写入文件流对象
			String location = con.getHeaderField("Location");
			System.out.println(location);    //这里打印 null 
			System.out.println(con.getURL().toString());    //这里打印http://www.offerwow.cn/image/offerwow_staging/logo/1406880082963.jpg
			InputStream in = con.getInputStream();   //这句出异常
 | 
|
5分  | 
 你看看直接访问域名有没有变,应该以能看到图片的地址栏地址为准。 
 | 
| 
 直接访问 出现了一个302 的跳转  
Request URL:http://www.offerwow.cn/image/offerwow_staging/logo/1406880082963.jpg 返回: 最终浏览器显示的地址 : http://121.37.63.66/offerwow_staging/logo/1406880082963.jpg 这种302 跳转 模式 HttpURLConnection 默认就处理啊 不需要做其他的 操作 我也测试了其他的网站 给一个302的跳转链接 能正常跳转  | 
|
| 
 求指点  | 
|
| 
 那么你观察一下 http 通信的过程中重定向跳转时有没有什么 Referer 之类的东西 (引用页),有些网站在你直接 GET 时没带引用页时会拒绝服务,因此它知道你是在盗链。
 
找一个 Eclipse 中的 TCP/IP Monitor 视图配置一个 forwarder 来观察 Http 过程。  | 
|
| 
 跳转时候 没有 Referer 但是浏览器 却能正常显示  | 
|
| 
 要跳转你要用一下头信息,调用responsecode 再看前后url变化就可以了。 
    con.setRequestProperty("User-agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1");
     con.setRequestProperty("accept-language", "zh-CN");
System.out.println(con.getURL().toString());    //这里打印http://www.offerwow.cn/image/offerwow_staging/logo/1406880082963.jpg
        int code=con.getResponseCode();
        System.out.println(con.getURL().toString());    //这里打印http://www.offerwow.cn/image/offerwow_staging/logo/1406880082963.jpg
 | 
|
| 
 你这里都没跳转啊  在浏览器 会出现一个 302 的跳转   返回: 为什么在代码里面跳转不过去呢  | 
|
15分  | 
URL url = new URL("http://www.offerwow.cn/image/offerwow_staging/logo/1406880082963.jpg");
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestProperty("User-agent", "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.215 Safari/535.1");
        con.setRequestProperty("accept-language", "zh-CN");
        con.setInstanceFollowRedirects(true);
        con.addRequestProperty("Cache-Control", "no-cache");
        con.connect();
        System.out.println(con.getURL().toString());    //这里打印http://www.offerwow.cn/image/offerwow_staging/logo/1406880082963.jpg
        int code=con.getResponseCode();
        System.out.println(con.getURL().toString());    //这里打印http://www.offerwow.cn/image/offerwow_staging/logo/1406880082963.jpg
自己看下打印的url还不明白吗?302必须设置User-agent和accept-language,跳转是浏览器帮你的。  | 
| 
 哦 明白了 谢谢大神 没想到 还有这么个规则 …….. 但是我 测试其他 url 不加 这两个User-agent和accept-language 一样可以正常跳转哦 。。。 这个是为什么啊  | 
|
| 
 我试了一下事实说明 跟你这个 设置User-agent和accept-language 没有什么关系 是服务器 拦截到了 我的url 没有跳转  | 
|
| 
 但是我还是谢谢你们   
 | 
|