HttpClient Headers vs HttpRequestMessage Headers
本文关键字:Headers HttpRequestMessage vs HttpClient | 更新日期: 2023-09-27 18:16:02
什么时候应该在HttpRequestMessage
对象中使用标头而不是在HttpClient
对象中使用标头?
我们需要添加授权(总是在变化)和一些自定义头(总是在变化)。
问题首选哪种方法?
我应该添加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
- 和基于请求的报头到HttpRequestMessage对象??
你的问题会自动回答。
DefaultRequestHeaders
是那些将成为任何请求的一部分,这是一个加分项,因为你将能够避免重复自己添加一些头一遍。另一方面,HttpRequestMessage.Headers
将只是该请求的一部分。
什么时候应该使用其中一个而不是另一个?我将使用两个例子:
-
我需要发送一个OAuth承载令牌作为每个请求的一部分,所以我在
HttpClient.DefaultRequestHeaders
中设置Authorization
标头,如果我需要刷新令牌,我只需要在那里再次设置它。 -
我需要发送一个实体序列化为JSON或XML取决于一些条件。也就是说,我将在每个请求的基础上设置
Content-type
头。