【问题标题】:Mapping a simple string with RestKit使用 RestKit 映射一个简单的字符串
【发布时间】:2023-03-16 17:45:01
【问题描述】:

我正在尝试从 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”

我收到此错误:命中错误:Error Domain=org.restkit.RestKit.ErrorDomain Code=-1017 "Loaded an unprocessable response (200) with content type 'application/json'"

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

谢谢

【问题讨论】:

    标签: ios objective-c restkit restkit-0.20


    【解决方案1】:

    当你使用postObject 时,RestKit 会尝试将响应数据应用到源对象(你的LoginRequest)。所以你需要在某个地方添加要存储的数据以及一个(响应)映射和描述符来处理它。

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

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

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

    【讨论】:

    • 但是在我的情况下如何使用响应?我正确收到了它,但我只需要从某个地方获取它并避免此异常!
    • 将响应更改为 JSON。或者,标题应该说明内容类型是纯文本,然后您需要设置序列化和映射来处理纯文本。
    • 所以这是服务器故障......我仍然认为 RestKit 功能强大但自 0.20 以来不灵活!旧版本非常灵活!是否可以在 0.20 中制作旧式 RestKit RKRequest ?
    • 你可以进行请求操作(技术上不是RKRequest)。如果服务器说它正在返回 JSON,那么它应该返回 valid JSON...
    • 对于从搜索到这里的其他人来说,现在看来字符串实际上是有效的 JSON 响应。 stackoverflow.com/questions/18419428/…
    猜你喜欢
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    相关资源
    最近更新 更多