Estou tentando fazer uma chamada REST muito básica para minha API MVC 3 e os parâmetros que passo não são vinculativos ao método de ação.
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
}
Estou faltando alguma coisa aqui?
AddObject(new { A = "foo", B = "bar" })
muito que leva as propriedades do objeto e os converte em parâmetrosrequest.AddParameter("text/json", body, ParameterType.RequestBody);
request.AddBody(new ...
do seu primeiro exemplo.Na versão atual do RestSharp (105.2.3.0), você pode adicionar um objeto JSON ao corpo da solicitação com:
Este método define o tipo de conteúdo como application / json e serializa o objeto em uma sequência JSON.
fonte
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);
Isto é o que funcionou para mim, para o meu caso, foi uma postagem para solicitação de login:
corpo:
fonte
Espero que isso ajude alguém. Funcionou para mim -
fonte
request.AddHeader("Accept", "application/json");
é a resposta correta.Se você tiver um
List
dos objetos, poderá serializá-los para JSON da seguinte maneira:E então use
addParameter
:E você precisará definir o formato da solicitação para
JSON
:fonte