2017-10-14 5 views
0

Je souhaiterais obtenir un contenu d'un service d'API REST. J'ai un Uri qui me renvoie un contenu json. Comme cet exemple ci-dessous:Récupérer le contenu d'un service d'API REST en C#

{ 
    "data": { 
     "id": "2", 
     "type": "people", 
     "attributes": { 
      "email": "[email protected]", 
      "name": "My Name", 
      "gender": "M", 
      "cpf": null, 
      "cnpj": null, 
      "rg": null, 
      "person-type": "NATURAL" 
     } 
    } 
} 

Ceci est mon code, mais je ne sais pas, je ne peux pas obtenir le contenu. Quelqu'un pourrait m'aider. Je veux juste récupérer ce contenu dans mon code.

async Task InitializeUserData() 
    { 
     var AppToken = Application.Current.Properties["AppToken"]; 
     var AppUid = Application.Current.Properties["AppUid"]; 
     var AppClientHeader = Application.Current.Properties["AppClientHeader"]; 

     using (var client = new HttpClient()) 
     { 
      client.BaseAddress = new Uri("https://api.xxx.com/v1/profile"); 
      client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
      client.DefaultRequestHeaders.TryAddWithoutValidation("Access-Token", AppToken.ToString()); 
      client.DefaultRequestHeaders.TryAddWithoutValidation("Client", AppClientHeader.ToString()); 
      client.DefaultRequestHeaders.TryAddWithoutValidation("uid", AppUid.ToString()); 
      HttpResponseMessage response = client.GetAsync("").Result; 

      if (response.IsSuccessStatusCode) 
      { 
       var contents = await response.Content.ReadAsStringAsync(); 
      } 
     } 
    } 
+0

Quelle est l'erreur? – Kzrystof

+0

Votre json n'est pas valide. – Valkyrie

+0

L'adresse de base doit être'https: //api.xxx.com/v1 ', puis appelez * var response = wait client.GetAsync ("profile/2"); * –

Répondre

0

Vous doit lieu une barre oblique / à la fin de l'URI BaseAddress, et ne doit pas placer une barre oblique au début de votre URI relative, comme dans l'exemple suivant.

client.BaseAddress = new Uri("https://api.xxx.com/v1/profile/"); 
//https://api.xxx.com/v1/profile"/" 

HttpResponseMessage response = client.GetAsync("").Result; 
if (response.IsSuccessStatusCode) 
{ 
    var contents = await response.Content.ReadAsStringAsync(); 
} 

Docs de référence MS Calling a Web API From a .NET Client

0

Je vois votre erreur a déjà été pris en charge, mais je vous recommande de jeter un oeil à Flurl. Cela rendra votre vie plus facile tout en écrivant ces requêtes, et rendra votre code beaucoup plus beau que en utilisant HttpClient (à cause de sa syntaxe courante).

En savoir plus sur Flurl's github page et Flurl's documentation