2017-09-26 4 views
0

Je suis en train de poster un JSON avec HhttpClient en utilisant un jeton d'autorisation permanente, mais je reçois toujours une erreur 401 du code non autorisé:Ajouter autorisation tête jeton permanent à POST JSON en utilisant HttpClient dans l'API REST

public static async Task<Uri> CrearitemAsync(Item item) 
{ 
    using (var client = new HttpClient()) 
    { 
     client.BaseAddress = new Uri(BaseUri); 
     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Authorization = 
      new AuthenticationHeaderValue("OAuth", AuthToken); 
     HttpResponseMessage response = await client.PostAsJsonAsync(
      "items/" + IdProvider, JsonConvert.SerializeObject(item)); 
     response.EnsureSuccessStatusCode(); 
     return response.Headers.Location; 
    } 
} 

J'ai aussi essayé ceci:

client.DefaultRequestHeaders.Add("Authorization", "Bearer " + AuthToken); 

Le jeton semble être bien. C'est une chaîne alphanumérique en minuscules. Est-ce la bonne façon d'utiliser un jeton permanent?

mise à jour La clé que je dois utiliser pour l'en-tête est: IDENTITY_KEY mais ne

+0

Non directement lié, mais [vous utilisez 'HttpClient' incorrect] (https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/). –

+0

Copie possible de [Paramètre d'en-tête d'autorisation de HttpClient] (https://stackoverflow.com/questions/14627399/setting-authorization-header-of-httpclient) – Cory

+0

Ne pas sérialiser l'élément manuellement (JsonConvert.SerializeObject). Passez simplement * item * à PostAsJsonAsync. (ou utilisez * StringContent * et * JsonConvert.SerializeObject *) pour le faire manuellement –

Répondre

1

finalement travaillé avec r .. a dû utiliser cette valeur « clé » plutôt que sur une autorisation dans l'en-tête:

client.DefaultRequestHeaders.Add("IDENTITY_KEY", AuthToken);