我正在尝试设置Content-Type
的标头HttpClient
我调用的 API 所需的对象。
我尝试设置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
要求?
内容类型是内容的标头,而不是请求的标头,这就是失败的原因。AddWithoutValidation正如罗伯特·利维所建议的可能有效,但您也可以在创建请求内容本身时设置内容类型(请注意,代码片段添加了application/json
在两个地方 - 用于 Accept 和 Content-Type 标头):
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);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)