2017-02-02 11 views
1

私は.NET HttpClientを使用するたびに、以前の.NET HTTPクライアント(WebClient)や他の言語のクライアントと比較して、APIの操作が非常に面倒であることがわかりました。このSO questionでわかるように、HttpClientリクエストの "Content-Type"ヘッダーを正しく設定するために多くの人が苦労しています。C#HttpClient:なぜMediaTypeWithQualityHeaderValueですか?

私の質問:要求に「Content-Type」ヘッダープロパティを設定しようとすると、MediaTypeWithQualityHeaderValueパラメータの目的は何ですか? The MSDN documentationは、単純に状態:

を追加の品質で表します。

...これは参考になりません。

"Content-Type"はリクエストヘッダーの単純な文字列値ですが、なぜHttpClientがそれを非常に複雑にしてしまったのでしょうか?さらに複雑さによって得られる利点はありますか?

答えて

3

目的は、セクション3.9の下で品質値を定義するHTTP標準に準拠することです。さらに詳しくは、RFC 2616で読むことができます。http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html

+0

「MediaTypeWithQualityHeader」は「Content-Type:application/json」のヘッダー値に設定され、十分な文字列ですか? MSDNのドキュメントでは、私のオリジナルの質問に示されているように、「追加の品質」と書かれていますか? –

+1

q値は、リストの優先度(たとえば、Acceptヘッダーのメディアタイプのリスト)を指定するために使用されます。リストアイテムに割り当てられた番号が高いほど、アプリケーションによって優先されます。 0はそれが絶対に望ましくないことを示す。 Acceptヘッダーを使用するシナリオでは、サーバーが最も高いq値を持つタイプをサポートしていない場合は、次に高いq値になります。 – Qyaffer

+0

@Qyafferの情報ありがとうございました。おそらく、MediaTypeWithQualityHeaderValueは、静的に定義された不明な(ソースコードを掘り下げることなく)値にq値を設定しています。私はまだHttpClientが開発者にこのような複雑さを課す理由を理解していませんか? –

関連する問題