我们php端给的请求参数的数据格式如下:data{  
    token:"public",
     "content": {
             "user": "1",  
             "pwd": "ZT4"
     } 
 }
php端的描述:data作为json字符串的一个键。
我在使用AFN这个框架,请问我该怎么处理。
ps:
@{@"data": ...};
这种封装数据的方式无效,因为data貌似不是咱们IOS中字典中的那种键。各位大神,给点建议。

解决方案 »

  1.   

    你的字典是像这样的:@{@"data":{
                @"token":@"public"
        }
    }
    但是你还需要把这个字典转成 JSON 字符串:NSError *error; 
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject: dict
                                                       options:NSJSONWritingPrettyPrinted
                                                         error:&error];if (! jsonData) {
        NSLog(@"Got an error: %@", error);
    } else {
        NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }
      

  2.   

    如果是用afnetworking框架,你设置好ResponseSerializer为[AFJSONResponseSerializer serializer]后,返回的responseObject直接可以当做字典对象来用,afn会帮你把json转为相应的对象,你自己根据实际情况直接使用就行了,比如你这里返回的data是个字典,你可以直接读取
    NSDictionary *dict=(NSDictonary *)[responseObject valueForKey:@"data"];
      

  3.   

    AFHTTPSessionManager * manager = [AFHTTPSessionManager manager];
        [manager POST:GET_DUTY_URL parameters:requestDic
              success:^(NSURLSessionDataTask *task, id responseObject)
         {
             NSDictionary * dict = (NSDictionary *)responseObject;
             NSString *  errorCode= [NSString stringWithFormat:@"%@",[dict objectForKey:@"code"]];
             if( [errorCode intValue] == 0 )
             {
                 NSLog(@"请求领取任务成功");
                 NSLog(@"dic = %@", dict);
                 [[MRCommonTools getInstance].viewController turnGetDutyView];
             }
             else
             {
                 NSLog(@"请求领取任务失败 code = %d", [errorCode intValue]);
             }
         }
              failure:^(NSURLSessionDataTask *task, NSError *error)
         {
             NSLog(@"requestGetDuty faild %@",error);
         }];