Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 无法从服务器api解析JSON_Ios_Objective C_Json_Api_Afnetworking 3 - Fatal编程技术网

Ios 无法从服务器api解析JSON

Ios 无法从服务器api解析JSON,ios,objective-c,json,api,afnetworking-3,Ios,Objective C,Json,Api,Afnetworking 3,我使用AFNetworking通过以下代码从服务器获取post api响应 void (^AuthLoginCompleteBlock)(BOOL success, NSString *message, NSDictionary *response, NSError *error); -(void)login:(NSString *)user password:(NSString *)password deviceID:(NSString *)deviceID callback:(authReq

我使用AFNetworking通过以下代码从服务器获取post api响应

void (^AuthLoginCompleteBlock)(BOOL success, NSString *message, NSDictionary *response, NSError *error);
-(void)login:(NSString *)user password:(NSString *)password deviceID:(NSString *)deviceID callback:(authRequestCompleteBlock)callback{

    AuthLoginCompleteBlock = callback;
    NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:user,@"data[User][username]]",password,@"data[User][password]]",deviceID,@"data[User][device_id]]", nil];

    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];

    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", nil];
    [manager POST:[NSString stringWithFormat:@"%@/%@",SERVER_URL,LOGIN] parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSString *str = [NSString stringWithFormat:@"%@",responseObject];

        AuthLoginCompleteBlock(YES,str,nil,nil);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        AuthLoginCompleteBlock(NO,error.description,nil,nil);
    }];
    NSLog(@"param = %@",parameters);
}
现在URL工作正常,一切正常,但问题是响应来自于我在AuthLoginCompleteBlock块中创建的消息字符串,NSDictionary响应为空,类似于此消息字符串

{
    message = "Please enter valid email related to your account.";
    status = failed;
}
当你试着这样拿东西的时候

NSData *jsonData = [message dataUsingEncoding:NSUTF8StringEncoding];

            NSError *error = nil;
            id json = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingAllowFragments error:&error];
            if(!error) {
                NSLog(@"hello = %@", json);
            }
            else{
                NSLog(@"errr = %@",error.description);
            }
得到以下错误

Error Domain=NSCOCAERRORDOMAIN Code=3840字符6周围的对象中的值没有字符串键。UserInfo={NSDebugDescription=对象中的值在字符6附近没有字符串键。这意味着服务器的Json格式不正确?但在postman中,响应如下,并且非常好

{
  "status": "failed",
  "message": "Please enter valid email related to your account."
}

如果我遗漏了什么,请评论。

问题是我已经得到了一本字典,所以我不需要解析它。错误是这两行

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
        manager.requestSerializer = [AFHTTPRequestSerializer serializer];

        NSDictionary *parameters = @{
                                     @"user": @"login",

                                     @"password": txtFieldPassword.text,

                                     @"device": @"ios",
                                     @"deviceToken": strToken,


                                     };


        NSLog(@"parameters is ====%@",parameters);
        manager.responseSerializer = [AFJSONResponseSerializer
                                      serializerWithReadingOptions:NSJSONReadingAllowFragments];
        [manager POST:@"yourUrl" parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject)

        {

            NSLog(@"success!%@",responseObject);
            [self successfullLogin:responseObject];


        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)
        {
            NSLog(@"error: %@", error);


        }];
 NSString *str = [NSString stringWithFormat:@"%@",responseObject];

 AuthLoginCompleteBlock(YES,str,nil,nil);

我正在将字符串发送到我的块,该块已经是一个字典。

似乎AFNetworking 3.0没有AFHTTPRequestOperationManager。是的,AFHTTPRequestOperationManager未包含在pod AFNetworking 3.0中