错误信息如下
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '***+[NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write'. *** First throw call stack
先说解决办法
session.requestSerializer = [AFJSONRequestSerializer serializer];
只要这一段,并不需要设置content-type。我感觉是af自动会帮我们设置
session为
AFHTTPSessionManager *session = [AFAppDotNetAPIClient sharedManager];
要注意一下,传的参数需要是NSDictionary,因为如果传nsstring或者nsdata,afn在解析的时候就会出现没有key值的问题,也就是一开始的错误
===============分割线================
解决过程我一开始用postman测试是发现Content-Type→application/json;charset=UTF-8
然后就一直设置如下这段
[session.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
加上之后就是一直报开头的错误
一开始我以为是传了jsonstring的关系,后来我换成了jsondata,还是不行,原因的话前面说了就是没有key的话afn不能识别json类型。
最后就是改成NSDictionary,完美通过。
这个我往上没有找到解决办法,记一下
网友评论