http://localhost:7351/API/Account/checkAccount
User-Agent: Fiddler
Host: localhost:7351
Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c
Content-Type: application/x-www-form-urlencoded;charset=utf-8
Content-Length: 48
Request Body 填写 为 json={account:"admin",passwd:"123456",level:"1"}
public class User_VM
{
public string account { get; set; }
public string passwd { get; set; }
public string level { get; set; }
}
后台接收函数为 public HttpResponseMessage checkAccount(User_VM p)
后台接收到的值总为空
当格式填写 {account:"admin",passwd:"123456",level:"1"}
application/json; charset=utf-8后台可以接收到数据
但 需求方希望 Request Body 填写 为
json={account:"admin",passwd:"123456",level:"1"}
谢谢各位!
1.他传的不是json.
2.你要让他给自己这种格式起个名字
3.让他在请求头中的正文类型中.用他这个起的新名字.
以上是废话
MediaTypeFormatter 在webapi里可以自定义这个东西.就能根据现有个格式进行解析.
http://www.cnblogs.com/artech/archive/2013/12/05/3460544.html
您好,对方用 Java写的后台服务 通过Content-Type: application/x-www-form-urlencoded;charset=utf-8 请求体post json={**} 可以正常返回数据。 我想问下 我所有采用.net web api 只能在Content-Type: application/json; charset=utf-8 请求体只能post {**}这种类型数据 想问下是哪里出现了问题?谢谢
@ningGis: webapi默认的MediaTypeFormatter 只有xml和json.不能解析form表单数据的.
最简单的办法是你别用[frombody]了.直接在action里request.content.readasform()["Json"]
就能取到json字符串了.
@吴瑞祥: 采用了这种方式解决了问题
public HttpResponseMessage checkAccount1(FormDataCollection form)
var str = form["Json"];
_User p = JsonConvert.DeserializeObject<_User>(str);
谢谢您的帮助!
MVC或者webAPI通过JSON方式POST数据,JS里面post的data要JSON.stringify(你的JSON),你试一下!
如果不行,尝试使用URL FORMData是一样的
对方说 app这块只能接受 json={***} 这种格式的数据,并且在fidder测试时,他所写的Java后台可以接收到 Json={***}格式数据, 而我采用的。net web api 在Content-Type: application/x-www-form-urlencoded;charset=utf-8 后台无法正常接收到数据,谢谢。
@ningGis: 你这样传递就不是JSON了,wenapi端口只会人为你传递过来的是个key,value对象,解析json这个key为一个stirng类型,值是string类型的Json数据而已。你需要自己反序列化
@Я!ńɡ:
public HttpResponseMessage checkAccount1(FormDataCollection form)
var str = form["Json"]; 接收到值后再进行转换一下
_User p = JsonConvert.DeserializeObject<_User>(str); 可以正常访问到数据了
谢谢!
http://weblog.west-wind.com/posts/2012/Aug/16/Mapping-UrlEncoded-POST-Values-in-ASPNET-Web-API
看了下您题的这文章 里边FormDataCollection form对我帮助很大!
public HttpResponseMessage checkAccount1(FormDataCollection form)
var str = form["Json"];
_User p = JsonConvert.DeserializeObject<_User>(str);
谢谢~!
综合了下各位的帮助
public HttpResponseMessage checkAccount1(FormDataCollection form){
var str = form["Json"];
_User p = JsonConvert.DeserializeObject<_User>(str);
}
成功获得所需对象