2013-02-19 23 views
0

如下網址提供了響應代碼301,當我通過Java.The網址運行,它是: http://www.amazon.com/Kindle-Wireless-Reading-Display-Globally/dp/B003FSUDM4/ref=amb_link_353259562_2?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-10&pf_rd_r=11EYKTN682A79T370AM3&pf_rd_t=201&pf_rd_p=1270985982&pf_rd_i=B002Y27P3M 和重定向URL它提供了按Java代碼:Java代碼顯示請求重定向,但瀏覽器不重定向。爲什麼?

http://www.amazon.com/Kindle-Keyboard-Free-Wi-Fi-Display/dp/B004HZYA6E

代碼是:

public class newTestURLConnection { 
    public static void main(String[] args) throws IOException { 
     String url="http://rads.stackoverflow.com/amzn/click/B003FSUDM4"; 
     HttpURLConnection con =(HttpURLConnection) new URL(url).openConnection(); 
     con.setInstanceFollowRedirects(false); 

     con.connect(); 

     InputStream is = con.getInputStream(); 
     System.out.println(con.getHeaderField("Location")); 
     System.out.println("Response code: " + con.getResponseCode()); 
    } 
} 

但是,當我在瀏覽器中打開url時,它不會重定向到:http://www.amazon.com/Kindle-Keyboard-Free-Wi-Fi-Display/dp/B004HZYA6E。任何人都可以提出爲什麼這種差異?

+0

你可以試試302代碼而不是301嗎? – Raman 2013-02-19 12:28:17

回答

1
instanceFollowRedirects 

protected boolean instanceFollowRedirects 

    If true, the protocol will automatically follow redirects. If false, the protocol will not automatically follow redirects. 

    This field is set by the setInstanceFollowRedirects method. Its value is returned by the getInstanceFollowRedirects method. 

    Its default value is based on the value of the static followRedirects at HttpURLConnection construction time. 

這是Class HttpURLConnection Docs

0

任何人都可以說明爲什麼這種差異?

這可能是亞馬遜響應不同的請求標頭的差異;例如User-Agent頭部中正在發送的內容。

也許這是爲了向真正的客戶和網絡爬蟲/內容刮板展示不同的結果。

無論是什麼原因,兩頁之間的差異非常微妙......至少對人眼而言。


如果這不只是一個一次性的東西(例如測試一些代碼),我也應該問您是否已閱讀亞馬遜的「使用條件」;例如它說一下:

沒有亞馬遜的服務,也沒有任何亞馬遜服務的任何部分,可以轉載,複製,抄襲,出售,轉售,訪問,或以其他方式利用的未經明確的書面任何商業目的亞馬遜同意