首页 > 解决方案 > Web API Post 参数 Null

问题描述

我是 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" />到网络配置中,但无济于事。

谁能指出我在请求中做错了什么?

干杯

标签: c#post

解决方案


试试这个代码

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)

推荐阅读