1. ホーム
  2. java

[解決済み] この特定のサイト "http://www.macys.com/"のロケーションフィールドを見つけることができません。

2022-01-29 15:07:05

質問

私は以下のサイトを持っています:"。 http://www.macys.com/ "のためにリダイレクトがあります。

これはコードスニペットです。

String location = "http://www.macys.com/";
do {
    HttpURLConnection conn = null;
    try {
        url = location;
        conn = (HttpURLConnection) new URL(url).openConnection();
        conn.setRequestMethod("GET");
        /**
         * Setting the Browser properties
         */
        conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76 Safari/537.36");
        conn.setConnectTimeout(2000);
        conn.setInstanceFollowRedirects(false);
        conn.setReadTimeout(10000);
        conn.connect();
    } catch (Exception e) {
        logger.error("Exception : {}", e.getMessage());
    }

    responseCode = connection.getResponseCode();

    if ((responseCode > 300 && responseCode < 310)) {
        location = connection.getHeaderField("Location");
        if (location == null)
            break;
    }
} while (responseCode > 300 && responseCode < 310);

最初の反復の後、応答コードは302ですが、ロケーションフィールドは見つかりません。

何が間違っているのでしょうか?

どうすればいいですか?

レスポンスボディを見ると、サイトがリクエストを拒否していることがわかります。

Access Denied: You don't have permission to access the requested URL on this server.

サイトからは Location ヘッダが表示され、アクセス拒否のレスポンスコード302が表示されます。