【问题标题】:Restkit cannot read valid json?Restkit 无法读取有效的 json?
【发布时间】:2012-04-04 14:47:23
【问题描述】:

我刚开始使用restkit for ios。我有一个非常简单的 json 响应

{ “结果”: [ { “用户名”:“5964”, “名字”:“你的名字” } ] }

这是一个有效的 json(针对 jsonlint 测试)

但是,当我尝试将它与 RKClient 一起使用时,它不会将其视为 json。这是我的代码

-(void) request:(RKRequest *)request didLoadResponse:(RKResponse *)response{

    if([request isGET]){
        if([response isJSON]){
            NSLog(@"JSON Response from Server %@", [response bodyAsString] );    
        }else{
            NSLog(@"Non JSON Response from Server %@", [response bodyAsString] );    
        }
    }

}

它总是记录“非 JSON 响应....”,但 json 是完全有效的。当我使用 RKObjectMapping 时也会发生同样的事情;错误将是“无法找到 MIME 类型文本/xml 的解析器。

非常感谢任何帮助。

谢谢

【问题讨论】:

  • 如果您想解析 JSON 并且出现错误“无法找到 MIME 类型 text/xml 的解析器”,您的问题可能出在您的 restkit 配置的标头或服务器响应中。 Restkit : [RKObjectManager sharedManager].serializationMIMEType = RKMIMETypeJSON;服务器响应标头应该是“application/json”,而不是“text/xml”。你有日志服务器端吗?
  • Thaks Beber,我设置了 [RKObjectManager sharedManager].serializationMIMEType = RKMIMETypeJSON;那没有用。但是,一旦我将标头添加到服务器脚本中,一切似乎都很好。

标签: ios json restkit


【解决方案1】:

我有点笨,但是添加后问题就解决了

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

到服务器脚本。

【讨论】:

    【解决方案2】:

    服务器响应头应该是“application/json”,而不是“text/xml”。 ;p

    【讨论】:

      【解决方案3】:

      如果由于任何原因您无法更改服务器标头并将 Mime 类型返回为 xml 或 json,您仍然可以添加 mime 类型“text/html”的映射以作为 json 处理。

      只需添加:

      [[RKParserRegistry sharedRegistry] setParserClass:[RKJSONParserJSONKit class] forMIMEType:@"text/html"];   
      

      并且不要忘记添加相关的头文件:

      #import <RestKit/RKJSONParserJSONKit.h>
      

      为我工作。

      看看https://github.com/RestKit/RestKit/wiki/Using-a-Custom-MIME-Type

      【讨论】:

      • 对我也有用!这是我能找到的唯一真正有效的答案。谢谢!
      猜你喜欢
      • 2019-06-16
      • 2021-12-10
      • 1970-01-01
      • 2019-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多