RestKit 0.20 - 预期的内容类型(空)

Posted

技术标签:

【中文标题】RestKit 0.20 - 预期的内容类型(空)【英文标题】:RestKit 0.20 - Expected content type (null) 【发布时间】:2012-11-22 09:15:03 【问题描述】:

Restkit 0.20

有谁知道我为什么每次通话都会得到这个输出?关于追踪它有什么建议吗?我可以在调试输出中看到 json 有效负载。

error=Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type (null), got application/json" UserInfo=0x9187fe0 NSLocalizedRecoverySuggestion=

我正在打的电话是

[manager getObjectsAtPath:@"/customers" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) 
        NSArray* statuses = [mappingResult array];
        NSLog(@"Loaded customers: %@", statuses);
     failure:^(RKObjectRequestOperation *operation, NSError *error) 
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                        message:[error localizedDescription]
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alert show];
        NSLog(@"Customer Error: %@", error);
    ];

我的映射代码是

@interface DataCustomers : NSObject

@property (nonatomic, copy) NSString* customerid;
@property (nonatomic, copy) NSString* firstname;
@property (nonatomic, copy) NSString* lastname;
@property (nonatomic, copy) NSString* email;

@end



RKObjectMapping *map = [RKObjectMapping mappingForClass:[DataCustomers class]];
    [map addAttributeMappingsFromDictionary:@
     @"id" : @"customerid",
     @"firstname" : @"firstname",
     @"lastname" : @"lastname",
     @"email" : @"email"];

[manager addResponseDescriptor: [RKResponseDescriptor responseDescriptorWithMapping:map
                                                                            pathPattern:@"/customers"
                                                                                keyPath:@"customers"
                                                                            statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]];

【问题讨论】:

似乎是某个地方的库冲突。完全相同的代码在新项目中没有此错误。很奇怪。 【参考方案1】:

您是否正确设置了处理内容类型的意愿?

尝试将此添加到您的 AppDelegate:

#import "RKMIMETypeSerialization.h"
#import "RKNSJSONSerialization.h"

[RKMIMETypeSerialization registerClass:[RKNSJSONSerialization class] forMIMEType:@"application/json"];

【讨论】:

这与它无关。我发生了一些图书馆冲突,严重影响了 AFNetwork。另外,我用 nil 替换了 pathPattern。 有趣。你可以自己添加这个问题的答案,顺便接受它作为解决方案。【参考方案2】:

发生了一些奇怪的库冲突,使 AFNetwork 完全混乱。

除了消除这个问题之外,我还在 pathPattern 中添加了 nil。

【讨论】:

以上是关于RestKit 0.20 - 预期的内容类型(空)的主要内容,如果未能解决你的问题,请参考以下文章

无法让 Restkit 0.20 + CoreData 工作

Restkit 0.20:处理到抽象实体的映射

RestKit 0.20 使用 nsdata 发布数组 Json

带有 RestKit 0.20 的 Google 地理编码 API

从 RestKit 0.10 更新到 0.20

restkit 版本 0.20 上的 fetchRequest - 没有已知的类方法