Reskit响应只是一个字符串,而不是JSON

时间:2014-05-29 19:25:00

标签: ios objective-c restkit-0.20

在我的应用程序中,我正在进行不同的调用,除了一个调用之外,它们只能返回一个响应为SUCCESS的字符串。我收到此错误

"The operation couldn’t be completed. (Cocoa error 3840.)", NSLocalizedDescription=Loaded an unprocessable response (200) with content type 'application/json'}

我如何告诉restkit访问“Content-Type:text / plain”

这是一个电话会议。

1 个答案:

答案 0 :(得分:4)

简短的回答:你做不到。 RestKit仅用于处理JSON对象,因此它需要JSON响应(与RESTful范例保持一致)。

但是,您绝对可以使用AFNetworking发布对象,RestKit实际上包含这些对象。我使用AFNetworking进行非核数据相关的通信。这是一个代码示例,介绍如何从RestKit获取AFHTTPClient并进行POST,期待text/plain响应。

AFHTTPClient *httpClient = [RKObjectManager sharedManager].HTTPClient;
NSDictionary *requestObject = @{@"label1":data1, @"label2":data2};
[httpClient setParameterEncoding:AFJSONParameterEncoding];
[httpClient setDefaultHeader:@"Accept" value:@"text/plain"];
[httpClient postPath:urlPath parameters:requestObject success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSString *response = (NSString*)responseObject;
    if([response isEqualToString:@"SUCCESS"]) NSLog(@"It worked!");
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    //failure code goes here
}];

如果这是您唯一期待text/plain的电话,请在完成后更改Accept标题:

[httpClient setDefaultHeader:@"Accept" value:@"application/json"];