web-dev-qa-db-ja.com

URLConnectionにヘッダーを設定する適切な方法は何ですか?

私のコードは次のようなものです:

URLConnection cnx = address.openConnection();
cnx.setAllowUserInteraction(false);         
cnx.setDoOutput(true);
cnx.addRequestProperty("User-Agent", 
    "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
InputStream is = cnx.getInputStream();

InputStreamを取得する前にヘッダーを設定しても大丈夫ですか?ヘッダーは送信されますか、それともサーバーはデフォルトのURLConnectionのユーザーエージェント(存在する場合)を認識しますか?

19
Geo

ヘッダーmustInputStreamに影響を与える前に設定する必要があります-接続がすでに開いている場合は、IllegalStateExceptionがスローされます。

特にUser-Agentヘッダーに関しては、設定されている場合は送信する必要があります。

RLConnection JavaDocを参照してください。

21
Ken Gentle

質問に答えるために、コードは正しいです。 getInputStream()の瞬間、HTTPgetがターゲットサーバーに送信されます。

ユーザーエージェントに関する補足事項です。設定しない場合、URLConnectionはとにかくデフォルトのものを送信します。これは次のとおりです。

User-Agent: Java/1.6.0_24 (varies depending on your Java version)
4
Leif Ashley