【发布时间】:2014-09-29 22:04:00
【问题描述】:
在使用HttpClient 执行GET 时,有没有一种方法可以显式设置Content-Type 标头值?
我意识到这违反了 1.1 协议,但我正在使用一个不符合它的 API,并且需要我设置一个 Content-Type 标头。
我试过了,没用...
using (var httpClient = new HttpClient())
{
var httpRequestMessage = new HttpRequestMessage(HttpMethod.Get, "http://example.com");
httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "application/x-www-form-urlencoded+v1.3");
await httpClient.SendAsync(httpRequestMessage)
}
在添加TryAddWithoutValidation 后,我检查了DefaultRequestHeaders,它似乎没有设置Content-Type 值。
如果我尝试设置 httpRequestMessage 的 Content-Type(通过设置 httpRequestMessage.Content = ...,我会收到以下错误:
Cannot send a content-body with this verb-type.
有没有一种方法可以让我使用 HttpClient 为 GET 操作显式设置 Content-Type?
【问题讨论】:
-
作为一种解决方法,我同时可以使用
WebClient。 -
@ZenCoder。这不会设置
Content-Type标头。只有Accept标头。 -
GET 操作没有正文,因此无需设置 Content-Type。如果可能,应更正 API。
标签: c# .net dotnet-httpclient