2017-02-21 1 views
0

J'ai testé ce code et cela a fonctionné la première fois; maintenant je reçois une réponse vide. Cependant, avec Postman, je suis en mesure d'obtenir la réponse. Il semble que Json n'est pas lu correctement. Je reçois une erreur 400.HttpClient ne fonctionne pas dans asp.net (fonctionne dans Postman)

private Guid GetToken() 
{ 
var client = new HttpClient(); 
var uri = "url"; 
var jsonInString = JsonConvert.SerializeObject(new Authorization()); 

var response = client.PutAsync(uri, new StringContent(jsonInString, Encoding.UTF8, "application/json")).Result; 
var x = response.Content.ReadAsStringAsync().Result; 

if(x=="") 
    return Guid.Empty; 

return new Guid(response.Content.ReadAsStringAsync().Result); 
} 

public class Authorization 
{ 
    public string _x; 
    public Guid _y; 
    public Guid _z; 
    public long _a; 
    public long _b; 

    public Authorization() 
    { 
     x = 123; //dummy data 
     y = xx-xx-xx-xxxxx-xx-xxxx; 
     z = xx-xx-xx-xxxxx-xx-xxxx; 
     a = 123; 
     b = 123; 
    } 
} 
+0

Le code Http 400 reste pour "Demande incorrecte". Cela signifie que le backend de votre application ne peut pas gérer la requête donnée. Peut-être que vous avez mélangé la méthode (Get/Post) avec Postman et votre vraie application. – reporter

+0

Se pourrait-il que vous ayez oublié de déclarer la méthode de transport? – reporter

+0

La méthode est PUT, en fait je n'ai rien changé. Ceci est correct var response = client.PutAsync (uri, nouveau StringContent (jsonInString, Encoding.UTF8, "application/json")). Résultat; –

Répondre

0

J'ai réussi à le résoudre. Le problème était le nom des attributs dans le Json object.

J'utilisé Resharper et que mes rebaptisés variables dans le Json object de Id à _id (notez le trait de soulignement).