2015-04-22 17 views
38

Im Implementieren einer API von anderen Kollegen mit Apiary.io, in einem Windows Store App-Projekt.Hinzufügen von Kopfzeilen bei Verwendung von httpClient.GetAsync

sie zeigen dieses Beispiel eines Verfahrens i

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

} 
} 

in diesem und einige andere Methoden ich habe müssen einen Header mit einem Token zu implementieren, die ich erhalten, bevor

heres ein Bild von Postbote (Chrome Erweiterung) mit dem Header im im Gespräch über enter image description here

Wie füge ich diese Autorisierung Header zur Anfrage?

+0

möglich Duplikat [Einstellung Authorization-Header von Httpclient] (http://stackoverflow.com/questions/14627399/setting-authorization-header-of-httpclient) –

Antwort

52

Sie sie wie so zu Httpclient hinzufügen:

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

Hier eine detaillierte SO answer

4

Sie können die Header, die Sie benötigen, zur HttpClient hinzufügen.

Hier ist eine nette tutorial darüber.

Dies bezieht sich nicht nur auf POST-Anfragen, Sie können sie auch für GET-Anfragen verwenden.

+0

dank :) es half – Ric

17

Die akzeptierte Antwort funktioniert, aber kann und es kompliziert, wenn ich versuchen wollte Header hinzufügen Accept. Das ist, womit ich endete. Es scheint mir einfacher, so denke ich, dass ich mit ihm in Zukunft bleiben werde:

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

Eine spätere Antwort, aber weil niemand diese Lösung geben ...

Wenn Sie nicht wollen, setzen die Kopfzeile der HttpClient-Instanz, indem Sie sie zu DefaultRequestHeaders, hinzufügen, können Sie Header pro Anforderung festlegen. Aber Sie werden verpflichtet sein, die SendAsync() Methode zu verwenden. (Es könnte helfen, wenn Sie die Httpclient wiederverwenden möchten --which eine gute practice-- ist und etwas zu tun, Thread-sicher und ohne jedes Mal sendet die gleichen Header ...)

Verwenden Sie es wie folgt aus:

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

sicherer scheint nicht DefaultRequestHeaders zu verwenden wenn der Wert sich häufig ändert. –

+2

Bitte beachten Sie sehr wahrscheinlich 'requestMessage.Headers.Authorization = new AuthenticationHeaderValue (" Bearer ", Ihr_Token);' "Bearer" wäre ein ungültiger HTTP-Header –

+0

Danke, dass wir unseren HttpClient wiederverwenden und dies hat uns geholfen – StevenMcD

Verwandte Themen