呼び出している API の要件に従ってオブジェクトContent-Type
のヘッダーを設定しようとしています。HttpClient
以下のように設定してみましたContent-Type
。
using (var httpClient = new HttpClient())
{
httpClient.BaseAddress = new Uri("http://example.com/");
httpClient.DefaultRequestHeaders.Add("Accept", "application/json");
httpClient.DefaultRequestHeaders.Add("Content-Type", "application/json");
// ...
}
ヘッダーを追加することはできますAccept
が、追加しようとするとContent-Type
次の例外がスローされます。
HttpRequestMessage
ヘッダー名が誤って使用されています。リクエスト ヘッダーが で、レスポンス ヘッダーが でHttpResponseMessage
、コンテンツ ヘッダーがHttpContent
オブジェクトで使用されていることを確認してください。
Content-Type
リクエストにヘッダーを設定するにはどうすればよいですかHttpClient
?
ベストアンサー1
コンテンツ タイプはリクエストのヘッダーではなくコンテンツのヘッダーであるため、これが失敗します。AddWithoutValidation
ロバート・レヴィの提案によると動作する可能性もありますが、リクエスト コンテンツ自体を作成するときにコンテンツ タイプを設定することもできます (コード スニペットではapplication/json
、Accept ヘッダーと Content-Type ヘッダーの 2 か所に追加されることに注意してください)。
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://example.com/");
client.DefaultRequestHeaders
.Accept
.Add(new MediaTypeWithQualityHeaderValue("application/json"));//ACCEPT header
HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Post, "relativeAddress");
request.Content = new StringContent("{\"name\":\"John Doe\",\"age\":33}",
Encoding.UTF8,
"application/json");//CONTENT-TYPE header
client.SendAsync(request)
.ContinueWith(responseTask =>
{
Console.WriteLine("Response: {0}", responseTask.Result);
});