Ric*_*Ric 117 c# windows-runtime dotnet-httpclient windows-store-apps apiary.io
我在Windows商店应用程序项目中实现了其他同事与Apiary.io的api.
他们展示了我必须实现的方法的这个例子
var baseAddress = new Uri("https://private-a8014-xxxxxx.apiary-mock.com/");
using (var httpClient = new HttpClient{ BaseAddress = baseAddress })
{
using (var response = await httpClient.GetAsync("user/list{?organizationId}"))
{
string responseData = await response.Content.ReadAsStringAsync();
}
}
Run Code Online (Sandbox Code Playgroud)
在这个和其他一些方法中,我需要一个带有我之前获得的标记的标题
下面是一个邮递员(镀铬扩展)的图像,标题我正在谈论

如何将该授权标头添加到请求中?
Phi*_*ppe 232
后来的答案,但因为没有人给出这个解决方案......
如果您不想通过将HttpClient实例添加到HttpClient实例来设置标头HttpClient,则可以为每个请求设置标头.
但是你将不得不使用这种DefaultRequestHeaders方法.
这是正确的解决方案,如果你想重用httpclient - 这是性能和端口耗尽问题的一个很好的做法- 并做一些线程安全的事情,而不是每次都发送相同的标题 ...
像这样使用它:
using (var requestMessage =
new HttpRequestMessage(HttpMethod.Get, "https://your.site.com"))
{
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", your_token);
httpClient.SendAsync(requestMessage);
}
Run Code Online (Sandbox Code Playgroud)
kmc*_*mee 135
将GetAsync与HttpClient一起使用时,您可以像这样添加授权标头:
httpClient.DefaultRequestHeaders.Authorization
= new AuthenticationHeaderValue("Bearer", "Your Oauth token");
Run Code Online (Sandbox Code Playgroud)
这确实为HttpClient的生命周期添加了授权标头,因此如果您访问授权标头未更改的一个站点,这将非常有用.
这是一个详细的SO 答案
sir*_*ank 49
接受的答案有效但当我想尝试添加Accept标头时可能会变得复杂.这就是我最终的结果.这对我来说似乎更简单,所以我想我将来会坚持下去:
client.DefaultRequestHeaders.Add("Accept", "application/*+xml;version=5.1");
client.DefaultRequestHeaders.Add("Authorization", "Basic " + authstring);
Run Code Online (Sandbox Code Playgroud)
小智 7
按照greenhoorn的回答,您可以像这样使用“扩展”:
public static class HttpClientExtensions
{
public static HttpClient AddTokenToHeader(this HttpClient cl, string token)
{
//int timeoutSec = 90;
//cl.Timeout = new TimeSpan(0, 0, timeoutSec);
string contentType = "application/json";
cl.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType));
cl.DefaultRequestHeaders.Add("Authorization", String.Format("Bearer {0}", token));
var userAgent = "d-fens HttpClient";
cl.DefaultRequestHeaders.Add("User-Agent", userAgent);
return cl;
}
}
Run Code Online (Sandbox Code Playgroud)
并使用:
string _tokenUpdated = "TOKEN";
HttpClient _client;
_client.AddTokenToHeader(_tokenUpdated).GetAsync("/api/values")
Run Code Online (Sandbox Code Playgroud)
小智 7
有时,您只需要此代码。
httpClient.DefaultRequestHeaders.Add("token", token);
Run Code Online (Sandbox Code Playgroud)