17

HTTPをWebサーバーと話しているとしましょう。HTMLまたはテキストを受け入れますが、HTMLを優先します。言い換えれば、ヘッダーは(私は思う!)と言うべきです

受け入れる:text / html、text / *

私はJavaを使用しているので、URLConnectionがあります。使用する必要があります:

myUrlConnction.setRequestProperty("Accept", "text/html");
myUrlConnction.addRequestProperty("Accept", "text/*");

また

myUrlConnction.setRequestProperty("Accept", "text/html, text/*");

またはそれらは同等ですか?

一般に、私が見るサードパーティのコードのほとんどは、これらのヘッダーの順序や複数の値についてあまり心配していないようです。そのため、どのように機能するのか疑問に思っています。

4

2 に答える 2

19

setRequestPropertyとaddRequestPropertyの基本的な違いは次のとおりです。-

  1. setRequestProperty>>一般的なリクエストプロパティを設定します。キーを持つプロパティがすでに存在する場合は、その値を新しい値で上書きします。

  2. addRequestProperty>>キーと値のペアで指定された一般的なリクエストプロパティを追加します。このメソッドは、同じキーに関連付けられている既存の値を上書きしません。

詳細については、APIドキュメントを参照してください

于 2014-07-28T09:54:02.870 に答える
7

最初のコードスニペットは2つのaccept-headerになり、2番目のコードスニペットは2つのセレクターを持つ1つのaccept-headerになります。

それらは実際には同等です。

仕様には、より具体的なメディア範囲が優先されることも記載されているため、どちらも期待される動作をもたらします。

複数のメディア範囲を指定する必要があり、それらが同じように特定されている場合は、qパラメーターを追加できます。

出典:http 1.1仕様(http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html):

于 2012-07-12T19:32:00.893 に答える