Paramètre JSON RestSharp

J’essaie de lancer un appel REST très bas vers mon API MVC 3 et les parameters que je transmets ne sont pas liés à la méthode d’action.

Client

var request = new RestRequest(Method.POST); request.Resource = "Api/Score"; request.RequestFormat = DataFormat.Json; request.AddBody(request.JsonSerializer.Serialize(new { A = "foo", B = "bar" })); RestResponse response = client.Execute(request); Console.WriteLine(response.Content); 

Serveur

 public class ScoreInputModel { public ssortingng A { get; set; } public ssortingng B { get; set; } } // Api/Score public JsonResult Score(ScoreInputModel input) { // input.A and input.B are empty when called with RestSharp } 

Est-ce que j’ai râté quelque chose?

    Vous n’avez pas à sérialiser le corps vous-même. Juste faire

     request.RequestFormat = DataFormat.Json; request.AddBody(new { A = "foo", B = "bar" }); // uses JsonSerializer 

    Si vous voulez simplement des parameters POST (qui seraient toujours liés à votre modèle et qui sont beaucoup plus efficaces car il n’ya pas de sérialisation vers JSON), faites ceci:

     request.AddParameter("A", "foo"); request.AddParameter("B", "bar"); 

    C’est ce qui a fonctionné pour moi, pour mon cas c’était un post pour la demande de connexion:

     var client = new RestClient("http://www.example.com/1/2"); var request = new RestRequest(); request.Method = Method.POST; request.AddHeader("Accept", "application/json"); request.Parameters.Clear(); request.AddParameter("application/json", body , ParameterType.RequestBody); var response = client.Execute(request); var content = response.Content; // raw content as ssortingng 

    corps:

     { "userId":"sam@company.com" , "password":"welcome" } 

    Dans la version actuelle de RestSharp (105.2.3.0), vous pouvez append un object JSON au corps de la requête avec:

     request.AddJsonBody(new { A = "foo", B = "bar" }); 

    Cette méthode définit le type de contenu sur application / json et sérialise l’object sur une chaîne JSON.