2013-01-17 81 views
11

我有以下代碼:JSON響應被解釋爲純文本/

NSURL *URL = [NSURL URLWithString:[@"some-address"]]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL]; 

RKObjectRequestOperation *requestOperation = [[RKObjectRequestOperation alloc] initWithRequest:request responseDescriptors:[self.objectManager responseDescriptors]]; 

[requestOperation start]; 
[requestOperation waitUntilFinished]; 

我碰到下面的錯誤。

Object request failed: Underlying HTTP request operation failed with error: Error Domain=AFNetworkingErrorDomain Code=-1016 "Expected content type {(
    "application/x-www-form-urlencoded", 
    "application/json" 
)}, got text/plain" UserInfo=0x1f5e3c40 {NSLocalizedRecoverySuggestion={"total_rows":16,"offset":1,"rows":[ 

{"id":"1","key":1,"value":{"_id":"1","_rev":"1-e75042683867a7030fc4d3aa3b72ef35", 
"user":{ 
"userId":"1", 
"name":"A", 
....... 
]}}, ..... 

爲什麼我得到這個錯誤,當響應是JSON格式?

回答

20

我們做到了。剛剛成立

[RKMIMETypeSerialization registerClass:[RKXMLReaderSerialization class] forMIMEType:@"text/plain"]; 

,並隨時如果你使用JSON而不是XML的改變RKXMLReaderSerialization類RKNSJSONSerialization類(XML是我們的情況下)。

+0

謝謝幫助 – zyxel

+0

Stefano Mondino,你是男人! –

+0

拯救了我的生命非常感謝你 –

1

你沒有在你的反應正確設置的mime-type頭。注意錯誤說got text/plain,而代碼期望application/jsonapplication/x-www-form-urlencoded

+0

如果什麼MIME類型(服務器端)是不是我的控制之下?我使用Restkit 0.20 –

+0

然後看看你是否可以覆蓋/加 –

+0

已經完成客戶端可以接受的MIME類型。我用這個: [RKMIMETypeSerialization的registerClass:[RKXMLReaderSerialization類] forMIMEType:@ 「text/plain的」]; 但它保持失敗的對象映射。每個網絡請求/響應在我的所有應用程序中都能正常工作,除此之外我們已經通知「服務人員」關於這個錯誤(當你實際發送一個真正格式良好的XML時,沒有理由設置文本/純文本類型),但他們不會修復它。 必須有XML解析器裏面的東西(這是不是Restkit的,因爲0.20了),也許我應該打開另一個話題了這個(自然失業率被問及JSON) –