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();
}
}
これと他のいくつかの方法で私は私が前に取得したトークンとヘッダを持つ必要があります
ヘッダーのimについての郵便配達員(クロムの拡張子)の画像
authorizationヘッダーをリクエストに追加する方法
HttpClientと一緒にGetAsyncを使用するときは、以下のように認証ヘッダを追加できます。
httpClient.DefaultRequestHeaders.Authorization
= new AuthenticationHeaderValue("Bearer", "Your Oauth token");
これはHttpClientの存続期間中に認証ヘッダーを追加するため、認証ヘッダーが変更されない1つのサイトにアクセスしている場合に役立ちます。
これが詳細なSO 答えです
後で答えましたが、誰もこの解決策を与えなかったので...
HttpClient
に追加してDefaultRequestHeaders
インスタンスにヘッダーを設定したくない場合は、リクエストごとにヘッダーを設定できますとします。
しかし、あなたはSendAsync()
メソッドを使うことを余儀なくされるでしょう。
これは正しい解決策ですHttpClient
を再利用したい場合 - これは良い習慣です。
このように使用してください。
using (var requestMessage =
new HttpRequestMessage(HttpMethod.Get, "https://your.site.com"))
{
requestMessage.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", your_token);
httpClient.SendAsync(requestMessage);
}
受け入れられた答えは機能しますが、Acceptヘッダーを追加しようとすると複雑になる可能性があります。これが私が最終的に得たものです。それは私には簡単に思えるので、私は将来それに固執すると思います:
client.DefaultRequestHeaders.Add("Accept", "application/*+xml;version=5.1");
client.DefaultRequestHeaders.Add("Authorization", "Basic " + authstring);
Greenhoornの答えに従って、次のように "Extensions"を使うことができます。
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;
}
}
そして使用する:
string _tokenUpdated = "TOKEN";
HttpClient _client;
_client.AddTokenToHeader(_tokenUpdated).GetAsync("/api/values")