c# web api post request null

本文关键字:request null post api web | 更新日期: 2023-09-27 18:29:14

使用c#webapi服务器。

我的客户电话看起来像:

$.ajax({
    type: method,
    url: urls.server + url,
    data: (method === "POST" ? '='+JSON.stringify(data) : data),
    dataType: "json",
    success: function(data){
        callback(data);
    },
    error: function(err) {
        onError(err);
    }
});

我的C#服务器方法看起来像:

[HttpPost, Route("All/GetMyTeam")]
public POST_GetMyTeam_Response Post(GetMyTeam_Request request)
{
    return new POST_GetMyTeam_Response();
}

现在,当我使用谷歌Chrome插件"高级休息客户端"时,我的请求完全正确。但是,如果我发送相同的请求(我在chrome的调试窗口中的网络区域中看到),有效载荷是相同的,请求到达,但里面的所有字段都为空。

public class GetMyTeam_Request
{
    public string UserId;
    public string TeamId;
}

我还尝试从json客户端中删除'=',但我注意到大多数答案都导致了添加(尽管他们从未告诉过它应该用撇号包装,但除此之外它不起作用)。尝试在ajax请求的两个标头或按原样字段中添加contentType application/json。。

TIA。

c# web api post request null

在ajax请求中指定

contentType: 'application/json'

而且您不需要在json字符串数据之前附加"="字符串

data: (method === "POST" ? '='+JSON.stringify(data) : data),
                         //^^^^ here

去掉=符号,它就可以工作了。

$.ajax({
    type: method,
    url: urls.server + url,
    data: (method === "POST" ? JSON.stringify(data) : data),
    dataType: "json",
    contentType: 'application/json',
    success: function(data){
        callback(data);
    },
    error: function(err) {
        onError(err);
    }
});