2013-02-14 68 views
4

我有一個返回plist的WS。
我正在使用Restkit,我想映射響應。在text/xml中的Restkit響應

所以首先我initilialize我的ObjectManager這樣的:

sharedInstance.manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:ROOT_URL]]; 

我接受的文本/ XML:

[[RKObjectManager sharedManager] setAcceptHeaderWithMIMEType:RKMIMETypeTextXML]; 

而且我啓動了我的請求:

NSMutableURLRequest *request = [[RKObjectManager sharedManager] requestWithObject:nil method:RKRequestMethodPOST path:@"/foo/foo" parameters:nil]; 
RKManagedObjectRequestOperation *operation = [[RKObjectManager sharedManager] managedObjectRequestOperationWithRequest:request managedObjectContext:[BddManager sharedInstance].manager.managedObjectStore.mainQueueManagedObjectContext success:^(RKObjectRequestOperation *operation, RKMappingResult *result) { 
    NSLog(@"Loading mapping result: %d", result.count); 
} failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    NSLog(@"Fail!"); 
}]; 
[operation start]; 

最後我得到此錯誤:

NSLocalizedDescription=Expected content type {(
"application/x-www-form-urlencoded", 
"application/json" 
)}, got text/xml, 

我在做什麼錯?

+0

您使用的是什麼版本的RestKit? v0.10或v.20? – flashfabrixx 2013-02-14 17:09:11

+0

最後一個:0.20.0rc1 – 2013-02-14 19:34:10

回答

10

RestKit 0.20.0rc1不包括主存儲庫的XML序列化,但你可以找到一個位置:RKXMLReaderSerialization。在那裏你初始化RestKit(或源文件添加到您的項目)

pod 'RKXMLReaderSerialization', :git => 'https://github.com/RestKit/RKXMLReaderSerialization.git', :branch => 'master' 

進口頭:通過的CocoaPods

安裝。

#import "RKXMLReaderSerialization.h" 

最後,用RestKit註冊序列化類。在初始化對象管理器之後並在設置accept標頭之前插入它。

sharedInstance.manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:ROOT_URL]]; 
[RKMIMETypeSerialization registerClass:[RKXMLReaderSerialization class] forMIMEType:@"application/xml"]; 
[[RKObjectManager sharedManager] setAcceptHeaderWithMIMEType:RKMIMETypeTextXML]; 
+0

這應該是被接受的答案。它像一個魅力。 – Donnit 2013-08-24 17:54:12

0

1)您需要告訴RKObjectManager如何處理加載過程後正在序列化的數據。

[objectManager setRequestSerializationMIMEType:RKMIMETypeTextXML]; 

編輯:

剛剛看到你在談論的請求,但使用通過POST發送對象到您的WS方法的。

要從服務器獲取對象,請使用RestKit示例應用程序中提供的以下方法。

[[RKObjectManager sharedManager] getObjectsAtPath:@"yourPath" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
    // Success 
} failure:^(RKObjectRequestOperation *operation, NSError *error) { 
    // Error 
    RKLogError(@"Load failed with error: %@", error); 
}]; 
+0

它不起作用,我去了同樣的錯誤。 此外這種方法是序列化請求,我認爲我的問題是序列化響應,不是? 但是,謝謝 – 2013-02-14 22:22:34

+0

剛編輯我的答案。 – flashfabrixx 2013-02-15 20:00:12

+0

我有同樣的問題:( – 2013-02-18 20:15:44