Restkit装载gzip压缩JSON
我使用RestKit加载与RKRequest gzip压缩JSON:Restkit装载gzip压缩JSON
RKRequest* request = [[RKClient sharedClient] requestWithResourcePath:urlString delegate:self];
[request send];
但是我收到一个状态406使用AsiHttpRequest一切正常,响应被拉开,我可以与工作JSON。当我关闭服务器上的gzip时,RKRequest就起作用了。
有什么不对?我发现没有办法告诉RKRequest,响应将被压缩。有任何想法吗?
编辑:
这很奇怪。有时我
Headers: {
Connection = "Keep-Alive";
"Content-Length" = 14;
"Content-Type" = "text/html; charset=UTF-8";
Date = "Fri, 16 Mar 2012 13:44:16 GMT";
"Keep-Alive" = "timeout=2, max=500";
Server = Apache;
"X-Powered-By" = "Servlet/2.5 JSP/2.1";
}
,有时我得到的应用程序/ gzip,即处理正确。我的问题是为什么我得到“Content-Type”=“text/html; charset = UTF-8”;有时。 并且在Safari中打开的相同请求始终会导致gzip响应。
你可以使用HTTP代理(如Charles)发布你的头文件吗?
您可能需要在通话后修改您的“请求标题”。
确保您的防火墙能够接受POST调用。这可能是一个https问题。
编辑:
您可能需要配置您的服务器始终返回响应的GZIP和基于扩展型DEFLATE。这是基于此(http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/)。
例子:
# compress json format in .htaccess (for apache servers):
AddOutputFilterByType DEFLATE application/json
您可以在这里找到(http://httpd.apache.org/docs/2.0/mod/mod_deflate.html)
的 'mod_deflate模块' 的文档如果您可以张贴输出头,这也将是有益的,因为它们应当包括:
Accept-Encoding: gzip, deflate
类似问题
编辑:
确保你也这样做:
[[RKClient sharedClient] setValue:@"gzip" forHTTPHeaderField:@"Accept-Encoding"];
或本
[[RKClient sharedClient] setValue:@"gzip, deflate" forHTTPHeaderField:@"Accept-Encoding"];
这应该设置你的头的值,以接受“压缩”编码的响应。我注意到这些问题的GitHub:
嗨 - 我editet我张贴以上 – netshark1000 2012-03-17 20:32:47
你控制服务器端代码?我发现了另一个相关的问题。 “text/html”Content-Type很奇怪。 – 2012-03-17 21:07:58
是的,我也可以控制服务器端。从浏览器调用请求将返回gzip响应。 – netshark1000 2012-03-18 06:55:29