web-dev-qa-db-ja.com

HttpClientヘッダーとHttpRequestMessageヘッダー

HttpClientのヘッダーよりもHttpRequestMessageオブジェクトのヘッダーをいつ使用する必要がありますか?

Authorization(常に変更)といくつかのカスタムヘッダー(常に変更)を追加する必要があります

質問

  1. どちらが好ましい方法ですか?
  2. 共通のヘッダー(すべてのリクエストで同じ)をHttpClientに追加し、リクエストベースのヘッダーをHttpRequestMessageオブジェクトに追加する必要がありますか?

       //HttpRequestMessage Code
        HttpRequestMessage reqmsg =new HttpRequestMessage();
        reqmsg.Headers.Authorization =new AuthenticationHeaderValue("some scheme");
        reqmsg.Headers.Add("name","value");
    
        //HttpClient Code
        HttpClient client =new HttpClient();
        client.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("some scheme");
        client.DefaultRequestHeaders.Add("name", "value");
    
14
nen
  1. どちらが好ましい方法ですか? HttpClientに共通のヘッダー(すべてのリクエストで同じ)を追加する必要があります
  2. httpRequestMessageオブジェクトへのリクエストベースのヘッダー??

あなたの質問は自動的に答えられます。

DefaultRequestHeadersはリクエストの一部となるものであり、ヘッダーを何度も追加することを繰り返す必要がないため、プラスになります。一方、HttpRequestMessage.Headersはそのリクエストの一部にすぎません。

いつ使用する必要がありますか? 2つの例を使用します。

  • すべてのリクエストの一部としてOAuthベアラートークンを送信する必要があるため、HttpClient.DefaultRequestHeadersAuthorizationヘッダーを設定し、トークンを更新する必要がある場合は、もう一度設定する必要があります。

  • 条件に応じて、JSONまたはXMLとしてシリアル化されたエンティティを送信する必要があります。つまり、リクエストごとにContent-typeヘッダーを設定します。

16