Ich implementiere eine API, die von anderen Kollegen mit Apiary.io erstellt wurde, in einem Windows Store-App-Projekt.
Sie zeigen dieses Beispiel einer Methode, die ich implementieren muss:
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();
}
}
Bei dieser und einigen anderen Methoden muss ein Header mit einem Token vorhanden sein, das ich zuvor erhalten habe.
Hier ist ein Bild von Postman (Chrome-Erweiterung) mit dem Header, über den ich spreche:
Wie füge ich diesen Autorisierungsheader zur Anforderung hinzu?
Antworten:
Wenn Sie GetAsync mit dem HttpClient verwenden, können Sie die Autorisierungsheader wie folgt hinzufügen:
Dadurch wird der Autorisierungsheader für die Lebensdauer des HttpClient hinzugefügt. Dies ist hilfreich, wenn Sie auf eine Site stoßen, an der sich der Autorisierungsheader nicht ändert.
Hier ist eine detaillierte SO- Antwort
quelle
Eine spätere Antwort, aber weil niemand diese Lösung gab ...
Wenn Sie den Header für die
HttpClient
Instanz nicht festlegen möchten, indem Sie ihn zu hinzufügenDefaultRequestHeaders
, können Sie Header pro Anforderung festlegen .Sie sind jedoch verpflichtet, die
SendAsync()
Methode anzuwenden .Dies ist die richtige Lösung, wenn Sie das wiederverwenden möchten
HttpClient
- eine gute Vorgehensweise fürVerwenden Sie es so:
quelle
requestMessage.Headers.Authorization = new AuthenticationHeaderValue("Bearer", your_token);
"Bearer" benötigen, um einen ungültigen HTTP-Header zu erhaltenusing
aber im Konstruktor instanziieren und in derDispose()
using
auf HttpClient gesagt (dies ist schlecht), ich habe auf HttpRequesMessage gesagt (weil es nicht verwaltete Speicherpuffer für das Streaming gibt, die nach der Verwendung entsorgt werden MÜSSEN). Die Anforderung und Antwort sind und müssen bei jeder Anforderung entsorgt werden (andernfalls bleiben große Speicherblöcke für eine lange Zeit gesperrt). DasHttpClient
ist bis zu einem gewissen Grad wiederverwendbar.Die akzeptierte Antwort funktioniert, kann aber kompliziert werden, wenn ich versuchen wollte, Accept-Header hinzuzufügen. Damit bin ich gelandet. Es scheint mir einfacher zu sein, also denke ich, dass ich in Zukunft dabei bleiben werde:
quelle
Sie können dem Header alle benötigten Header hinzufügen
HttpClient
.Hier ist ein schönes Tutorial dazu.
Dies bezieht sich nicht nur auf POST-Anfragen, sondern kann auch für GET-Anfragen verwendet werden.
quelle
Nach der Antwort des Greenhoorns können Sie "Erweiterungen" wie folgt verwenden:
Und benutze:
quelle
Manchmal benötigen Sie nur diesen Code.
quelle