C#如何在GET方法中使用HttpClient设置自定义请求标头?

时间:2019-01-24 09:16:57

标签: c# http httpclient

我正在使用HttpClient发送请求,我想在GET方法中使用HttpClient使用自定义请求标头吗?

这是我的代码:

public HttpResponseMessage Get(string url, List<KeyValuePair<string, string>> headers = null)
    {
        HttpRequestMessage request = new HttpRequestMessage()
        {
            RequestUri = new Uri(url),
            Method = HttpMethod.Get,
        };
        if (headers != null && headers.Count > 0)
        {
            foreach (var header in headers)
            {                    
                request.Headers.Add(header.Key, header.Value);

            }
        }            
        HttpResponseMessage response = httpClient.SendAsync(request).Result;
        return response;
    }

但是它在request.Headers.Add(header.Key, header.Value);

处引发了错误

下面是错误消息:

  
    

标题名称滥用。确保请求标头与HttpRequestMessage一起使用,响应标头与HttpResponseMessage一起使用,内容标头与HttpContent对象一起使用。

  

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

您应该使用您的HttpClient实例,如下所示:

httpClient.DefaultRequestHeaders
      .Accept
      .Add(new MediaTypeWithQualityHeaderValue("x-your-custom-header"));