0

次の URL を Java で実行すると、応答コード 301 が返されます。URL は次のとおりです 。 center-10&pf_rd_r=11EYKTN682A79T370AM3&pf_rd_t=201&pf_rd_p=1270985982&pf_rd_i=B002Y27P3M Javaコードごとに提供されるリダイレクトURLは次のとおりです。

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://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";
        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にリダイレクトされません。この違いの理由を誰かが提案できますか?

4

2 に答える 2

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からのものです。

于 2013-02-19T12:32:22.060 に答える
0

なぜこの違いがあるのか​​誰かが提案できますか?

Amazonは、リクエストヘッダーの違いに基づいて異なる応答をしている可能性があります。たとえば、User-Agentヘッダーで送信されているもの。

おそらくこれは、実際の顧客とWebクローラー/コンテンツスクレーパーに異なる結果を表示することに関するものです。

理由が何であれ、2つのページの違いは非常に微妙です...少なくとも人間の目には。


これが1回限りのことではない場合(たとえば、コードのテスト)、Amazonの「使用条件」を読んだかどうかも尋ねる必要があります。例:それが言うところのビット:

AmazonサービスまたはAmazonサービスのいかなる部分も、Amazonの書面による明示的な同意なしに、複製、複製、コピー、販売、転売、訪問、またはその他の商業目的で利用することはできません。

于 2013-02-19T12:48:58.347 に答える