HttpClient Headers vs HttpRequestMessage Headers

本文关键字:Headers HttpRequestMessage vs HttpClient | 更新日期: 2023-09-27 18:16:02

什么时候应该在HttpRequestMessage对象中使用标头而不是在HttpClient对象中使用标头?

我们需要添加授权(总是在变化)和一些自定义头(总是在变化)。

问题
  1. 首选哪种方法?

  2. 我应该添加common吗头(跨所有请求相同)到HttpClient和请求基于头到HttpRequestMessage对象?

       //HttpRequestMessage Code
        HttpRequestMessage reqmsg =new HttpRequestMessage();
        reqmsg.Headers.Authorization =new AuthenticationHeaderValue("some scheme");
        reqmsg.Headers.Add("name","value");
        //HttpClient Code
        HttpClient client =new HttpClient();
        client.DefaultRequestHeaders.Authorization =new AuthenticationHeaderValue("some scheme");
        client.DefaultRequestHeaders.Add("name", "value");
    

HttpClient Headers vs HttpRequestMessage Headers

  1. 首选的方法是什么?我应该添加共同的头(相同的所有请求)到HttpClient
  2. 和基于请求的报头到HttpRequestMessage对象??

你的问题会自动回答。

DefaultRequestHeaders是那些将成为任何请求的一部分,这是一个加分项,因为你将能够避免重复自己添加一些头一遍。另一方面,HttpRequestMessage.Headers将只是该请求的一部分。

什么时候应该使用其中一个而不是另一个?我将使用两个例子:

  • 我需要发送一个OAuth承载令牌作为每个请求的一部分,所以我在HttpClient.DefaultRequestHeaders中设置Authorization标头,如果我需要刷新令牌,我只需要在那里再次设置它。

  • 我需要发送一个实体序列化为JSON或XML取决于一些条件。也就是说,我将在每个请求的基础上设置Content-type头。