Estoy tratando de hacer una llamada REST muy básica a mi MVC 3 API 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?
AddObject(new { A = "foo", B = "bar" })
lo que toma las propiedades del objeto y las convierte en parámetrosrequest.AddParameter("text/json", body, ParameterType.RequestBody);
request.AddBody(new ...
en su primer ejemplo.En la versión actual de RestSharp (105.2.3.0) puede agregar un objeto JSON al cuerpo de la solicitud con:
Este método establece el tipo de contenido en application / json y serializa el objeto en una cadena JSON.
fuente
var client = new RestSharp.RestClient("http://your.api.com"); var request = new RestSharp.RestRequest("do-something", Method.POST); var body = new {details = new {extras = "stuff"}}; request.AddJsonBody(body); var response = client.Execute(request);
Esto es lo que funcionó para mí, para mi caso fue una publicación para solicitud de inicio de sesión:
cuerpo :
fuente
Espero que esto ayude a alguien. Funcionó para mí
fuente
request.AddHeader("Accept", "application/json");
es la respuesta correcta.Si tiene varios
List
objetos, puede serializarlos a JSON de la siguiente manera:Y luego usa
addParameter
:Y deberá configurar el formato de solicitud para
JSON
:fuente