Próbuję wykonać bardzo podstawowe wywołanie REST do mojego interfejsu API MVC 3, a parametry, które przekazuję, nie są powiązane z metodą akcji.
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);
serwer
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
}
Czy coś mi umyka?
AddObject(new { A = "foo", B = "bar" })
też zrobić, co pobiera właściwości obiektu i konwertuje je na parametryrequest.AddParameter("text/json", body, ParameterType.RequestBody);
request.AddBody(new ...
twoim pierwszym przykładzie jest jedna przestarzała parafeza .W aktualnej wersji RestSharp (105.2.3.0) możesz dodać obiekt JSON do treści żądania za pomocą:
Ta metoda ustawia typ zawartości na application / json i serializuje obiekt do ciągu JSON.
źródło
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);
To właśnie zadziałało dla mnie, w moim przypadku był to post do żądania logowania:
ciało:
źródło
Mam nadzieję, że to komuś pomoże. U mnie zadziałało -
źródło
request.AddHeader("Accept", "application/json");
to, że to poprawna odpowiedź.Jeśli masz
List
obiekty, możesz serializować je do formatu JSON w następujący sposób:A następnie użyj
addParameter
:I będziesz musiał ustawić format żądania na
JSON
:źródło