使用RestKit映射一个简单的字符串

时间:2013-07-24 15:01:49

标签: ios objective-c restkit restkit-0.20

我正在尝试从Web服务中读取一个简单的json字符串响应:

假设我有这种映射:

RKObjectMapping* loginRequestMapping = [RKObjectMapping requestMapping];
[loginRequestMapping addAttributeMappingsFromDictionary:@{
 @"userName" : @"UserName",
 @"password" : @"Password"
 }];
RKRequestDescriptor* loginReq = [RKRequestDescriptor requestDescriptorWithMapping:loginRequestMapping objectClass:[LoginRequest class] rootKeyPath:nil method:RKRequestMethodPOST];
[objectManager addRequestDescriptor:loginReq];

我尝试了这个请求:

LoginRequest* loginReq = [LoginRequest new];
loginReq.userName = @"username";
loginReq.password = @"1234567890";

__block NSString* token;
[objectManager postObject:loginReq
                     path:@"/sendboxapi/api/login"
                     parameters:nil
                        success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) {
                            token = [mappingResult firstObject];
                            NSLog(@"RESULT : %@", token);
                        }
                        failure:^(RKObjectRequestOperation *operation, NSError *error) {
                            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                                            message:[error localizedDescription]
                                                                           delegate:nil
                                                                  cancelButtonTitle:@"OK"
                                                                  otherButtonTitles:nil];
                            [alert show];
                            NSLog(@"Hit error: %@", error);
                        }];

原始回复的格式为:“47c4e389-be2b-466b-b015-c8d5682c4f0a”

我收到此错误:命中错误:错误Domain = org.restkit.RestKit.ErrorDomain Code = -1017“加载了内容类型为'application / json'的无法处理的响应(200)”

设置为能够从Web服务读取此字符串的正确RKObjectMapping是什么?

谢谢

1 个答案:

答案 0 :(得分:0)

当您使用postObject时,RestKit会尝试将响应数据应用于源对象(您的LoginRequest)。因此,您需要为要存储的数据添加某个位置,并使用(响应)映射和描述符来处理它。

另外,如果返回给你的字符串是:

"47c4e389-be2b-466b-b015-c8d5682c4f0a"

这不是JSON,你会在尝试处理它时遇到问题。