如何在HttpClient
请求中添加自定义标头?我使用PostAsJsonAsync
方法来发布JSON。我需要添加的自定义头是
"X-Version: 1"
这就是我到目前为止所做的:
using (var client = new HttpClient()) {
client.BaseAddress = new Uri("https://api.clickatell.com/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "xxxxxxxxxxxxxxxxxxxx");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = client.PostAsJsonAsync("rest/message", svm).Result;
}
9条答案
按热度按时间gk7wooem1#
我已经找到了问题的答案。
这应该会在请求中添加自定义标头
qc6wkl3g2#
以下是基于Anubis的答案(这是一种更好的方法,因为它不会修改每个请求的头部),但它更等效于原始问题中的代码:
35g0bw713#
ubby3x7f4#
HttpRequestMessage
类中有一个Headers
属性。您可以在那里添加自定义头,它将与每个HTTP请求一起发送。另一方面,HttpClient
类中的DefaultRequestHeaders
设置了使用该客户端对象发送的每个请求所发送的头,因此名称为 Default Request Headers。希望这能让事情更清楚,至少对将来看到这个答案的人来说。
kmbjn2e35#
我在HttpClient头中添加了x-api-version,如下所示:
xv8emn3q6#
我的两分钱。我同意Heug。公认的答案是一个心灵弯曲。我们退一步说。
默认头应用于特定HttpClient发出的所有请求。因此,您将使用默认头作为共享头。
但是,我们有时需要特定于某个请求的头。因此,我们将在方法中使用这样的东西:
如果你只需要一个额外的非默认头,你可以简单地用途:
更多帮助:How to add request headers when using HttpClient
s4n0splo7#
也可以使用HttpClient.PostAsync方法:
ohfgkhjo8#
如果有人想知道如何调用httpClient.GetStreamAsync(),它没有重载HttpRequestMessage来提供自定义头,您可以使用@Anubis给出的上述代码并调用
await response.Content.ReadAsStreamAsync()
如果您返回一个包含Range Header的blob url作为FileStreamResult,则此功能尤其有用
hiz5n14c9#
您可以使用
System.Net.Http.Json.JsonContent
,这是PostAsJsonAsync()
内部的功能:这具有优于其他替代方案的优点:
DefaultRequestHeaders
,这可能会影响其他不相关的查询。