我遇到了从sencha touch客户端发送到其余web abi Web服务的json问题。
当我从Sencha发送POST请求时,它看起来像:
var paramsData = Ext.encode({
FormId: '5',
WorkcardId: 'a1234',
FormDataSet: 'dataset'
});
Ext.Ajax.request({
url: JsonTestClient.app.webserviceUrl',
scope: this,
method: 'POST',
headers: { 'Authorization': 'Bearer ' + jsonToken.access_token },
params: paramsData,
contentType: "application/json;charset=utf-8",
success: function (response, options) {
//
},
failure: function (response, options) {
//
}
});
和paramsData值是:" {" FormId":" 5"," WorkcardId":" a1234",& #34; FormDataSet":"数据集"}"
但是在方法
中的WebApi RestService上[System.Web.Http.HttpPost]
public string SaveForm([FromBody] JObject jsonData)
{
//
}
jsonData看起来像
{
"{\"FormId\":\"5\",\"WorkcardId\":\"a1234\",\"FormDataSet\":\"dataset\"}": ""
}
所以看起来我的初始json被包装在另一个对象中并被用作键值。
任何想法可能出错? 感谢。
答案 0 :(得分:0)
从客户端站点(sencha),您可以验证http请求正文中的JSON吗?
从服务器端,您是否已编写该方法的所有合同,例如它可以接受哪种参数?
RequestFormat = WebMessageFormat.Json,
上面的属性应该放在接口内(或者如果你没有接口的话,直接在class里面),它定义了关于输入参数的合约。
答案 1 :(得分:0)
感谢kasharma,我注意了如何在sencha触摸请求中查看FormData。
从那我发现了一个解决方案。我不得不补充一下 jsonData:paramsData, 发布请求