java写当参数 null_当HTTP-POST有body时,url参数为null

One Solution: 我尝试将数据参数更改为复杂类型(只是具有公共属性的类),并将内容作为text / xml而不是text / plain发送,并且它按预期工作 . state参数不为null,我的数据类型为强类型对象 . 我想MVC想要为http-request体提供像XML或JSON那样的反序列化...

More Research: 我有机会再进行一些测试 . 如果帖子的主体是XML / JSON,它将首先尝试将body-object的属性映射到方法参数,如此 . 如果仍然具有未映射的属性,则它将其余属性与方法参数中任何强类型对象的属性相匹配

PostMethod(string p1, string p2, myClass obj) // if myClass has a p3 property it will be mapped from the xml body.

{

}

// xml in body of http-post

如果未映射所有参数,则它将尝试映射url参数 . 将它直接与我最初的问题联系起来 . 我现在看到的最好和最简单的解决方案是发送这样的text / xml .

PostMethod(string state, string data)

{

}

put data here

Urlencoded键/值对也可以很好地工作 .

var r = client.PostAsync(url, new StringContent("data=Something", Encoding.UTF8, "application/x-www-form-urlencoded"));

我最好的猜测是JSON和XML的键/值性质,FormEncoded帮助它映射到参数,这就是为什么它不喜欢纯字符串 .

这肯定让我很头疼,我发现MVC4文档相当稀缺(它还处于测试阶段),但我希望这可以帮助其他可能遇到同样问题的人 .


版权声明:本文为weixin_35401836原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。