我正在进行API调用,其中参数为:
{
name : XYZ,
marks : { maths : 34 }
}
我正在使用JSON model进行API调用并处理响应。
以下是我如何制作params Dict:
NSMutableDictionary *paramsDict = [[NSMutableDictionary alloc] init];
NSMutableDictionary *marksDict = [[NSMutableDictionary alloc] init];
[marksDict setObject:"34" forKey:"maths"];
[paramsDict setObject:marksDict forKey:@"marks"];
[paramsDict setObject:@"XYZ" forKey:@"name"];
这是我的API CALL
APIManager *apimanager = [[APIManager alloc] init];
apimanager.delegate = self;
[apimanager getServerDataWithParam:paramsDict apiMethodType:kAPIMethodTypePOST andMapperClass:[StudentMarks class]];
我的应用程序崩溃给了我这个崩溃日志
Assertion failure in +[JSONHTTPClient urlEncode:], /Users/Documents/JSONHTTPClient.m:122
2016-08-12 12:46:16.653 ClassMgmt[30227:1338857] *** Terminating app due to uncaught exception
'NSInternalInconsistencyException', reason: 'request parameters can be only of NSString or NSNumber classes.
'{ maths = 34; }' is of class __NSDictionaryM.'
我不想使用以下内容将NSDictionary
转换为NSString
:
[NSString stringWithFormat:@"@", aDictionary];
他们以任何其他方式将NSDictionary
作为POST
请求中的值作为参数发送吗?
答案 0 :(得分:0)
长故事短; HTTP POST参数只能是没有层次结构的名称/值对。
另一方面,如果你想发布JSON,那是HTTP POST主体的一部分,而不是参数。
答案 1 :(得分:0)
NSData * jsonData = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:nil]
NSString *paramsjsonStr = [[NSString alloc] initWithData: jsonData encoding:NSUTF8StringEncoding]