web-dev-qa-db-ja.com

リクエストごとにリクエストヘッダーを変更するC#HttpClient PCL

現在、クロスプラットフォームのサポートに System.Net.Http.HttpClient を使用しています。

リクエストごとにHttpClientオブジェクトをインスタンス化することはお勧めできません。可能な限り再利用する必要があると私は読みました。

サービスのクライアントライブラリの作成中に問題が発生しました。一部のAPI呼び出しには特定のヘッダーが必要ですが、一部のAPI呼び出しにはこの特定のヘッダーを含めないでください。

各リクエストで送信される「DefaultRequestHeaders」のみを操作できるようです。

実際にリクエストを行うときにオプションがありますか? 「client.PostAsync()」は、特定のリクエストのヘッダーのみを変更しますか?

(情報:リクエストはマルチスレッド化できます)。

前もって感謝します!

35
coalmee

はい、新しいHttpRequestMessageを作成し、必要なすべてのプロパティを設定してから、それをSendAsyncに渡すことができます。

var request = new HttpRequestMessage() {
   RequestUri = new Uri("http://example.org"),
   Method = HttpMethod.Post,
   Content = new StringContent("Here is my content")
}
request.Headers.Accept.Add(...);  // Set whatever headers you need to

var response = await client.SendAsync(request);
61
Darrel Miller

HttpContent.Headers を使用します。必要なヘッダーを含むHttpContentインスタンスを作成し、それを PostAsync メソッドに渡すだけです。

1
SuMMeR