47

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

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

サービスのクライアント ライブラリを作成中に問題が発生しました。特定のヘッダーが必要な API 呼び出しもあれば、この特定のヘッダーを含めてはならないものもあります。

各リクエストで送信される「DefaultRequestHeaders」しか操作できないようです。

実際に「client.PostAsync()」などでリクエストを作成して、特定のリクエストのヘッダーのみを変更するオプションはありますか?

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

前もって感謝します!

4

2 に答える 2

75

はい、新しい 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);
于 2014-05-07T15:39:12.180 に答える
1

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

于 2014-05-07T15:43:16.493 に答える