799 Stimmen

Festlegen des Autorisierungskopfes des HttpClient

Ich habe einen HttpClient, die ich für eine REST-API verwenden. Ich habe jedoch Probleme beim Einrichten des Authorization-Headers. Ich muss den Header auf das Token setzen, das ich bei meiner OAuth-Anfrage erhalten habe. Ich sah einige Code für .NET, die das folgende vorschlägt,

httpClient.DefaultRequestHeaders.Authorization = new Credential(OAuth.token);

Die Credential-Klasse existiert jedoch nicht in WinRT. Hat jemand eine Idee, wie man den Authorization Header setzt?

1290voto

Stephen Hynes Punkte 21511

Die Vorgehensweise ist also die folgende,

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

460voto

TheWhiteRabbit Punkte 15172
request.DefaultRequestHeaders.Authorization = 
    new AuthenticationHeaderValue(
        "Basic", Convert.ToBase64String(
            System.Text.ASCIIEncoding.ASCII.GetBytes(
               $"{yourusername}:{yourpwd}")));

119voto

Willie Cheng Punkte 6477

Ich bin auf der Suche nach einem guten Weg, mit diesem Problem umzugehen, und ich stelle mir dieselbe Frage. Hoffentlich wird diese Antwort allen helfen, die das gleiche Problem wie ich haben.

using (var client = new HttpClient())
{
    var url = "https://www.theidentityhub.com/{tenant}/api/identity/v1";
    client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);
    var response = await client.GetStringAsync(url);
    // Parse JSON response.
    ....
}

Referenz von https://www.theidentityhub.com/hub/Documentation/CallTheIdentityHubApi

81voto

Philippe Punkte 24052

Da es sich um eine gute Praxis zur Wiederverwendung der HttpClient-Instanz für Probleme mit der Leistung und der Erschöpfung der Häfen und weil keine der Antworten diese Lösung bietet (und Sie sogar zu schlechten Praktiken führt :( ), stelle ich hier einen Link zu der Antwort, die ich auf eine ähnliche Frage gegeben habe:

https://stackoverflow.com/a/40707446/717372

Einige Quellen für die richtige Verwendung von HttpClient:

54voto

Ich schlage Ihnen vor:

HttpClient.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");

Und dann können Sie es so verwenden:

var response = await client.GetAsync(url);
if (response.IsSuccessStatusCode)
{
    responseMessage = await response.Content.ReadAsAsync<ResponseMessage>();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X