我正在使用以下请求调用C#WebAPI:
Request URL: https://devserver/myapp/api/SaveSettings?debug=0
Request Method:POST
Status Code:202 Accepted
Request Headers
...
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
...
Form Data:
config:{"test":"test12"}
Response Headers:
...
Server: Microsoft-IIS/7.5
...
WebAPI应用程序代码是
public class SaveSettingsController : ApiController
{
[System.Web.Http.HttpGet]
[System.Web.Http.HttpPost]
public HttpResponseMessage PostComplex(MyModel update)
{
if (ModelState.IsValid)
{
return Request.CreateResponse(HttpStatusCode.Accepted,update.config.test);
}
}
}
虽然状态代码发送正确(这就是为什么我开始相信这段代码真的被执行了),但内容总是为空,我不知道为什么。我还尝试了一个配置为字符串的模型和
return Request.CreateResponse(HttpStatusCode.Accepted,update.config);
但无济于事:它仍然返回null。
这是为什么?我做错了什么?
答案 0 :(得分:1)
如果你在web api中有一个post参数,你可以用[FromBody]属性装饰它,如下所示:
[System.Web.Http.HttpGet]
[System.Web.Http.HttpPost]
public HttpResponseMessage PostComplex([FromBody] MyModel update)
{
if (ModelState.IsValid)
{
return Request.CreateResponse(HttpStatusCode.Accepted,update.config.test);
}
}
答案 1 :(得分:1)
你不必创建一个响应和所有复杂的东西,只需返回任何值,它就会被jsonized
答案 2 :(得分:1)
您请求的内容类型为application/x-www-form-urlencoded
,但您发送的是Json数据。将您的内容类型更改为application/json
或更改请求正文数据的格式。