Web API Post 参数为空
Web API Post Parameter 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" />
添加到网络配置中,但没有用。
任何人都可以指出我在请求中做错了什么吗?
干杯
我想是否可以将您的请求改写成这个 ->
var client = new RestClient("/api/order/createorder",Method.Post, DataFormat.Json);
client.AddJsonBody(order);
IRestResponse response = client.Execute(request);
这可能行得通,如果您传递给控制器的有效载荷是不同的类型,您可能需要一些映射。
试试这个代码
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)
我是 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" />
添加到网络配置中,但没有用。
任何人都可以指出我在请求中做错了什么吗?
干杯
我想是否可以将您的请求改写成这个 ->
var client = new RestClient("/api/order/createorder",Method.Post, DataFormat.Json);
client.AddJsonBody(order);
IRestResponse response = client.Execute(request);
这可能行得通,如果您传递给控制器的有效载荷是不同的类型,您可能需要一些映射。
试试这个代码
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)