2015-04-22 33 views
38

Implementuję api wykonane przez innych współpracowników za pomocą aplikacji Apiary.io w projekcie aplikacji sklepu Windows.Dodawanie nagłówków podczas korzystania z usługi httpClient.GetAsync

one pokazać przykład sposobu muszę wdrożyć

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(); 

} 
} 

W tym i kilku innych metod muszę mieć nagłówek z tokenem że mogę przed

Herezje obraz listonosza (rozszerzenie chrome) z nagłówkiem im mówię o enter image description here

Jak dodać nagłówek autoryzacji do żądania?

+0

możliwe duplikat [Ustawienie autoryzacji nagłówku HttpClient] (http://stackoverflow.com/questions/14627399/setting-authorization-header-of-httpclient) –

Odpowiedz

52

dodać je do httpclient tak:

httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "Your Oauth token"); 

Oto szczegółowy SO answer

4

Możesz dodać dowolne nagłówki, których potrzebujesz do HttpClient.

Oto ładny tutorial na ten temat.

Odnosi się to nie tylko do żądań POST, można go również użyć do żądania GET.

+0

dzięki :) pomogło – Ric

17

Przyjęte prace odpowiedź, ale może się skomplikowały, kiedy chciałem spróbować dodać Zebrane nagłówków. Tak właśnie skończyłem. Wydaje mi się prostsze tak myślę, że będę trzymać się go w przyszłości:

client.DefaultRequestHeaders.Add("Accept", "application/*+xml;version=5.1"); 
client.DefaultRequestHeaders.Add("Authorization", "Basic " + authstring); 
57

Późniejszy odpowiedź, ale ponieważ nikt nie daje to rozwiązanie ...

Jeśli nie chcesz, aby ustawić nagłówek w instancji HttpClient poprzez dodanie go do DefaultRequestHeaders, można ustawić nagłówki na żądanie. Ale będziesz zobowiązany do korzystania z metody SendAsync(). (To może pomóc jeśli chcesz ponownie użyć httpclient --which jest dobrym practice-- i zrobić coś wątku bezpieczny i bez wysyłania za każdym razem te same nagłówki ...)

Używaj go tak:

 var requestMessage = new HttpRequestMessage(HttpMethod.Get, "https://your.site.com"); 
     requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", your_token); 
     httpClient.SendAsync(requestMessage); 
+0

Wydaje bezpieczniej jest nie używać DefaultRequestHeaders jeśli wartość zmienia się często. –

+2

Zauważ, że najprawdopodobniej potrzebujesz 'requestMessage.Headers.Authorization = new AuthenticationHeaderValue (" Nośnik ", twój_token);' "Nośnik" będzie nieprawidłowym nagłówkiem HTTP –

+0

Dziękujemy za to, że ponownie używamy naszego HttpClient i to pomogło nam – StevenMcD

Powiązane problemy