J'essaie de faire un appel REST très basique à mon API MVC 3 et les paramètres 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 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
}
Est-ce que j'ai râté quelque chose?
AddObject(new { A = "foo", B = "bar" })
aussi ce qui prend les propriétés de l'objet et les convertit en paramètresrequest.AddParameter("text/json", body, ParameterType.RequestBody);
request.AddBody(new ...
dans votre premier exemple.Dans la version actuelle de RestSharp (105.2.3.0), vous pouvez ajouter un objet JSON au corps de la requête avec:
Cette méthode définit le type de contenu sur application / json et sérialise l'objet en une chaîne JSON.
la source
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);
C'est ce qui a fonctionné pour moi, pour mon cas c'était un post pour la demande de connexion:
corps:
la source
J'espère que cela aidera quelqu'un. Cela a fonctionné pour moi -
la source
request.AddHeader("Accept", "application/json");
c'est la bonne réponse.Si vous avez un
List
objet, vous pouvez les sérialiser en JSON comme suit:Et puis utilisez
addParameter
:Et vous devrez définir le format de la requête sur
JSON
:la source