简体   繁体   English

通过AFNetworking从服务器获取Json响应

[英]Get Json response from server by AFNetworking

I'm new to AFNetworking, I'm trying to get response from server by POST method, It's success but not as I expected. 我是AFNetworking的新手,我试图通过POST方法从服务器获取响应,这是成功的,但未达到我的预期。 In fact, I must got some like this: 实际上,我必须得到这样的东西:

{
  "status": true,
  "data": {
    "categorylist": {
      "items": [
        {
          "CategoryID": "24",
          "CategoryName": "Soup Set",
          "Description": "Soup Set is set for yummy soup with classic and premium soups.",
          "ImageSource": "http://quickorder.gliteservices.com/assets/images/categories/soupset.jpg",
          "CategoryType": "2"
        },
        {
          "CategoryID": "32",
          "CategoryName": "Drinks",
          "Description": "Quench your thirst by ordering one of the drinks",
          "ImageSource": "http://quickorder.gliteservices.com/assets/images/categories/Drinks.jpg",
          "CategoryType": "2"
        }
      ],
      "maxPage": "1",
      "maxItem": "9",
      "limitItem": "10"
    }
  }
}

But I only get this: 但是我只能得到这个:

data =     {
        categorylist =         {
            items =             (
            );
            limitItem = 20;
            maxItem = 0;
            maxPage = 0;
        };
    };
    status = 1;
}

So what'm I missing? 那我想念什么呢? I can't retrieve all items, here is my code: 我无法检索所有项目,这是我的代码:

-(void)getCategoryList:(void (^)(NSArray *, NSError *))completion{
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];

    [manager POST:[NSString stringWithFormat:@"%@%@",URL_BASE,CATEGORY_LIST_URL] parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Response received: %@", [responseObject description]);
        NSMutableArray *arrCategory;
        NSError *error;
        [ParserClass parseCategoryListWithData:responseObject withArray:&arrCategory withError:&error];

        if (error) {
            completion(nil, error);
        }else{
            completion(arrCategory, nil);
        }
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        completion(nil, error);
    }];
}

Can you guys help me? 你们能帮我吗? And explain why I missing data from responseObject? 并解释为什么我缺少来自responseObject的数据? Thank you very much 非常感谢你

Well! 好! I found the issue, I forgot one more required param. 我发现了问题,我忘记了另一个必需的参数。 The problem is solved by: 该问题通过以下方法解决:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"application/json"];
manager.requestSerializer = [AFJSONRequestSerializer serializer];

NSDictionary *params = @{@"limit":@"10", @"start":@"0", @"ClientID":@"2"};

[manager POST:[NSString stringWithFormat:@"%@%@",URL_BASE,CATEGORY_LIST_URL] parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Response received: %@", [responseObject description]);
    NSMutableArray *arrCategory;
    NSError *error;
    [ParserClass parseCategoryListWithData:responseObject withArray:&arrCategory withError:&error];

    if (error) {
        completion(nil, error);
    }else{
        completion(arrCategory, nil);
    }
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    completion(nil, error);
}];

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM