ios - 使用 restkit api objective-c 调用 Web 服务时出错

标签 ios objective-c iphone rest web-services

我正在尝试调用网络服务并上传图片,

映射有问题,我花了很多时间都没有成功。我得到的错误是:

Error Domain=org.restkit.RestKit.ErrorDomain Code=1001 "No mappable object representations were found at the key paths searched." UserInfo={NSLocalizedDescription=No mappable object representations were found at the key paths searched., NSLocalizedFailureReason=The mapping operation was unable to find any nested object representations at the key paths searched: user The representation inputted to the mapper was found to contain nested object representations at the following key paths: message, success This likely indicates that you have misconfigured the key paths for your mappings., keyPath=null, DetailedErrors=( )}

还有调用网络服务的方法

[SVProgressHUD show];

        [delegate.objectManager.HTTPClient.defaultHeaders setValue:@"application/x-www-form-urlencoded" forKey:@"content-type" ];

        RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[SignUpResponse class]]; //create response and request mapping

        [responseMapping addAttributeMappingsFromDictionary:@{@"phone": @"phone",
                                                              @"device_type": @"device_type",
                                                              @"device_token": @"device_token",
                                                              @"type": @"type",
                                                              @"email": @"email",
                                                              @"identity": @"identity",
                                                              @"date": @"date",
                                                              @"status": @"status",
                                                              @"name": @"name",
                                                              @"activation": @"activation",
                                                              @"image": @"image",
                                                              @"id": @"id"
                                                              }];

        RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping
                                                                                                method:RKRequestMethodPOST
                                                                                           pathPattern:@"AgentRegister"
                                                                                               keyPath:@"user"
                                                                                           statusCodes:[NSIndexSet indexSetWithIndex:200]];

        [delegate.objectManager.defaultHeaders setValue:@"application/x-www-form-urlencoded" forKey:@"content-type" ];
        delegate.objectManager.requestSerializationMIMEType =RKMIMETypeFormURLEncoded;


        [delegate.objectManager removeResponseDescriptor:responseDescriptor];

        [delegate.objectManager addResponseDescriptor:responseDescriptor];

        NSString *fcmToken = [FIRInstanceID instanceID].token;

        SignUpRequest *signUpRequest = [[SignUpRequest alloc]init];
        signUpRequest.phone = txtPhoneNumber.text;
        signUpRequest.email = txtEmail.text;
        signUpRequest.identity=txtIdOrCity.text;
        signUpRequest.device_type=@"IOS";
        signUpRequest.device_token=fcmToken;
        signUpRequest.type=@"1";


        UIImage *image = [UIImage imageNamed:@"Logo"];


        // Serialize the Article attributes then attach a file
        NSMutableURLRequest *request = [[RKObjectManager sharedManager] multipartFormRequestWithObject:signUpRequest method:RKRequestMethodPOST path:@"AgentRegister" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
            [formData appendPartWithFileData:UIImagePNGRepresentation(image)
                                        name:@"image"
                                    fileName:@"photo.png"
                                    mimeType:@"application/x-www-form-urlencoded"];
        }];

        RKObjectRequestOperation *operation = [[RKObjectManager sharedManager] objectRequestOperationWithRequest:request success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult){

            [SVProgressHUD dismiss];
            if(mappingResult.array.count !=0){
                [self performSegueWithIdentifier:@"goToVerify" sender:self];
            }else{

            }

            [delegate.objectManager removeResponseDescriptor:responseDescriptor];
        }failure:^(RKObjectRequestOperation *operation, NSError *error){
            [SVProgressHUD dismiss];
            NSLog(@"%@",error.description);
            UIAlertController *alert = [UIAlertController alertControllerWithTitle:@".."
                                                                           message:@"حدث خطاء ما .. حاول مرة اخري" preferredStyle:UIAlertControllerStyleAlert];

            UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

            }];
            [alert addAction:okAction];
            [self presentViewController:alert animated:YES completion:nil];
            [delegate.objectManager removeResponseDescriptor:responseDescriptor];

        }];
        [[RKObjectManager sharedManager] enqueueObjectRequestOperation:operation];

    }

最佳答案

此错误告诉您 user 上没有任何可用信息小路。例如,如果您的响应是 JSON,则不会有名为 user 的根 key , 只有 messagesuccess :

{ "user": "<- This key doesnt exist", "message": "<- There is something here", "success": "<- There is also something here" }

您很可能需要更改您的 keyPath来自 user类似于 success.user .

关于ios - 使用 restkit api objective-c 调用 Web 服务时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46686658/

相关文章:

ios - 使用配对的蓝牙设备以编程方式解锁 iphone?

android - 是否可以在不针对设备的情况下通过蓝牙 LE 进行广播?

ios - 如何快速打开文件并在其中附加字符串

ios - 如何在 iPad 中显示 Collection 而在 iPhone 中显示 List?

ios - 我无法理解这两个崩溃报告

ios - 使用NSSet不敏感地从NSArray案例中删除重复项

ios - 在 Objective-C 中使用类似 C 的静态变量是不好的做法吗?

iphone - 多遍核心数据迁移的示例或解释?

iphone - CFAutoRelease() 类似 iOS6 上的行为

iphone - 从两个按钮之间的手势画一条线