RestSharp JSON Parameter Posting

Estoy tratando de hacer una llamada REST muy básica a mi API de MVC 3 y los parámetros que paso no son vinculantes para el método de acción.

Cliente

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); 

Servidor

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

¿Me estoy perdiendo de algo?

    No tiene que serializar el cuerpo usted mismo. Solo haz

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

    Si solo quiere los parámetros POST en su lugar (que aún se asignarían a su modelo y es mucho más eficiente ya que no hay serialización en JSON) haga esto:

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

    Esto es lo que funcionó para mí, para mi caso era una publicación para solicitud de inicio de sesión:

     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 string 

    cuerpo :

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

    En la versión actual de RestSharp (105.2.3.0) puede agregar un objeto JSON al cuerpo de la solicitud con:

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

    Este método establece el tipo de contenido a application / json y serializa el objeto a una cadena JSON.