如何解决如何为 HttpClient 请求设置 Content-Type 标头?
内容类型是内容的标头,而不是请求的标头,这就是失败的原因。AddWithoutValidation
正如 Robert Levy
所建议的那样可能有效,但您也可以在创建请求内容本身时设置内容类型(请注意,代码片段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);
});
解决方法
我正在尝试根据我正在调用的 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
请求中设置标头?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。