任何人都可以解释我可以在我的字典中输入什么类型的POST请求。我可以从NSString
中添加其他内容吗?
self.manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:url];
self.manager.requestSerializer = [AFJSONRequestSerializer serializer];
AFJSONResponseSerializer *responseSerializer = [AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
[self.manager setResponseSerializer:responseSerializer];
self.manager.responseSerializer.acceptableContentTypes = [self.manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
double addTime = [[NSDate date] timeIntervalSince1970] * 1000;
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:
[SOUser sharedManager].Id, @"id",
[SOUser sharedManager].Token, @"token",
@25, @"name",
@"I am testing Ican", @"description",
@"progress", @"status",
@"public_g", @"privacy",
addTime, @"addtime",
addTime, @"edittime",
@"ddddd", @"image",
@"1419424397", @"endtime", nil];
NSLog(@"%@", parameters);
[self.manager POST:@"api/goal/"
parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject) {
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
}];
我可以加入double
吗?或NSArray
与double
?
答案 0 :(得分:3)
使用AFJSONRequestSerializer
时,您受到NSJSONSerialization
限制的约束,其文档说明:
可以转换为JSON的对象必须具有以下属性:
顶级对象为
NSArray
或NSDictionary
。所有对象都是
NSString
,NSNumber
,NSArray
,NSDictionary
或NSNull
的实例。- 的实例
所有词典键都是
NSString
。数字不是NaN或无穷大。
其他规则可能适用。调用
isValidJSONObject:
或尝试转换是判断给定对象是否可以转换为JSON数据的明确方法。
所以请将double
包裹在NSNumber
中,然后将其包含在为parameters
传递的词典中。
答案 1 :(得分:-1)
实际上你可以使用任何东西作为POST参数,但在NSDictionary中你除了使用NSString作为键和任何对象作为值。
这是表格苹果文件
In general, a key can be any object (provided that it conforms to the NSCopying protocol—see below), but note that when using key-value coding the key must be a string (see “Key-Value Coding Fundamentals”).
如果您不使用NSString作为密钥,NSDictionary可能会出错