2013-10-08 2 views
0

Je ne peux pas vraiment trouver un exemple de travail, c'est peut-être parce que ce n'est tout simplement pas possible?HTTP simple POST avec un type anonyme en tant que corps

Je voudrais prendre un C# objet de type anonyme comme ce qui suit:

var postBody = new 
{ 
    friend = new 
    { 
     name = "dave", 
     last ="franz" 
    }, 
    id = "12345", 
    login = "mylogin" 
}; 

et l'envoyer à mon service Web dans un simple http POST avec le corps poste suivant:

{ 
    "friend" : 
    { 
     "name" : "dave", 
     "last" : "franz" 
    }, 
    "id" : "12345", 
    "login" : "mylogin" 
}; 

Répondre

4

Assez facile en utilisant Json.net. Vous pouvez l'obtenir en utilisant le gestionnaire de paquets nuget dans VS.

var postBody = new 
{ 
    friend = new 
    { 
     name = "dave", 
     last ="franz" 
    }, 
    id = "12345", 
    login = "mylogin" 
}; 
var postString = Newtonsoft.Json.JsonConvert.SerializeObject(postBody); 
using(var wc = new WebClient()) 
{ 
    wc.Headers.Add("Content-Type", "application/json"); 
    var responseString = wc.UploadString(serviceAddress, "POST", postString); 
} 
+0

J'aurais préféré une solution sans avoir à installer un paquet nugget, mais cela n'a pas été mentionné dans ma publication initiale, et votre solution fonctionne plutôt bien. Merci Monsieur ! – guiomie

+1

@guiomie: la solution préférée de mvc ASP.NET utilise JavaScriptSerializer, qui est/était marqué comme obsolète (il y a une confusion considérable à propos de cette décision). Je préfère JSON.net de toute façon ... c'est très stable et beaucoup plus puissant que tout ce qui est offert dans la BCL. – spender

Questions connexes