AFNetworking POST参数中可以放入哪些类型?

时间:2014-12-18 14:51:14

标签: ios objective-c afnetworking

任何人都可以解释我可以在我的字典中输入什么类型的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吗?或NSArraydouble

2 个答案:

答案 0 :(得分:3)

使用AFJSONRequestSerializer时,您受到NSJSONSerialization限制的约束,其文档说明:

  

可以转换为JSON的对象必须具有以下属性:

     
      
  • 顶级对象为NSArrayNSDictionary

  •   
  • 所有对象都是NSStringNSNumberNSArrayNSDictionaryNSNull的实例。

  •   
  • 所有词典键都是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可能会出错