我们什么时候应该在
HttpRequestMessage
对象中使用标题而不是HttpClient
中的标题?
我们需要添加授权(总是在变化)和一些自定义标头(总是在变化)。
问题
哪个是首选方法?
我应该添加常见的
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 不记名令牌,所以我在
Authorization
中设置了 HttpClient.DefaultRequestHeaders
标头,如果我需要刷新令牌,我只需要在那里再次设置它。我需要根据某些条件发送序列化为 JSON 或 XML 的实体。也就是说,我将在每个请求的基础上设置
Content-type
标头。