我是 WEB API 的新手,我創建了一個 get 和一個 post 方法,get 正在作業,但是 post 中的引數回傳 null。
請求的代碼是
if (ModelState.IsValid)
{
var client = new RestClient(string.Format("{0}/api/order/createorder",Baseurl));
client.Timeout = -1;
var request = new RestRequest(Method.POST);
var test = JsonConvert.SerializeObject(order);
request.AddJsonBody(order);
IRestResponse response = client.Execute(request);
它指向以下方法
[HttpPost]
[Route("api/order/createorder")]
public HttpResponseMessage AddOrder([FromBody]IOrder order)
{
if(order== null)
{
var resp = new HttpResponseMessage(HttpStatusCode.BadRequest)
{
Content = new StringContent("The order is a required parameter"),
ReasonPhrase = "Order not present"
};
throw new HttpResponseException(resp);
}
我已將其添加<requestLimits maxAllowedContentLength="4294967295" />到網路配置中,但無濟于事。
誰能指出我在請求中做錯了什么?
干杯
uj5u.com熱心網友回復:
我想是否可以重寫您對此的請求->
var client = new RestClient("/api/order/createorder",Method.Post, DataFormat.Json);
client.AddJsonBody(order);
IRestResponse response = client.Execute(request);
這可能會起作用,如果您傳遞給控制器??的有效負載是不同型別,您可能需要一些映射。
uj5u.com熱心網友回復:
試試這個代碼
var client = new RestClient(string.Format("{0}/api/order/createorder",Baseurl));
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json; charset=utf-8");
var body = JsonConvert.SerializeObject(order);
request.AddParameter("application/json; charset=utf-8", body, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var result = response.Content;
并且永遠不要在動作引數中使用介面,因為動作需要創建一個物件,但從介面是不可能的
[Route("~/api/order/createorder")]
public HttpResponseMessage AddOrder([FromBody] Order order)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/340322.html
