相关疑难解决方法(0)

如何为HttpClient请求设置Content-Type标头?

我正在尝试根据我调用的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");
    // ...
}
Run Code Online (Sandbox Code Playgroud)

它允许我添加Accept标题但是当我尝试添加Content-Type它时抛出以下异常:

未使用的标题名称.确保请求标头与对象HttpRequestMessage一起使用 ,响应标头HttpResponseMessage和带有HttpContent对象的内容标头.

如何Content-TypeHttpClient请求中设置标头?

c# asp.net api rest http

677
推荐指数
11
解决办法
70万
查看次数

在WebAPI客户端中每次调用创建一个新的HttpClient的开销是多少?

HttpClientWebAPI客户端的生命周期应该是多少?为多个调用
设置一个实例是否更好HttpClient

创建和处理HttpClient每个请求的开销是多少,如下面的示例所示(摘自http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from- a-net-client):

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://localhost:9000/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    // New code:
    HttpResponseMessage response = await client.GetAsync("api/products/1");
    if (response.IsSuccessStatusCode)
    {
        Product product = await response.Content.ReadAsAsync<Product>();
        Console.WriteLine("{0}\t${1}\t{2}", product.Name, product.Price, product.Category);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net web-services asp.net-web-api dotnet-httpclient

152
推荐指数
4
解决办法
6万
查看次数