Ich versuche, einen sehr einfachen REST-Aufruf an meine MVC 3-API zu senden, und die von mir übergebenen Parameter sind nicht an die Aktionsmethode gebunden.
Klient
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);
Server
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
}
Vermisse ich hier etwas?
AddObject(new { A = "foo", B = "bar" })
was die Objekteigenschaften nimmt und sie in Parameter konvertiertrequest.AddParameter("text/json", body, ParameterType.RequestBody);
request.AddBody(new ...
in Ihrem ersten Beispiel.In der aktuellen Version von RestSharp (105.2.3.0) können Sie dem Anforderungshauptteil ein JSON-Objekt hinzufügen mit:
Diese Methode setzt den Inhaltstyp auf application / json und serialisiert das Objekt in eine JSON-Zeichenfolge.
quelle
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);
Dies hat bei mir funktioniert, für meinen Fall war es ein Beitrag für die Anmeldeanforderung:
Körper :
quelle
Hoffe das wird jemandem helfen. Es hat bei mir funktioniert -
quelle
request.AddHeader("Accept", "application/json");
ist die richtige Antwort.Wenn Sie über
List
Objekte verfügen , können Sie diese wie folgt in JSON serialisieren:Und dann benutze
addParameter
:Und Sie müssen das Anforderungsformat auf Folgendes einstellen
JSON
:quelle