Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 带有Etag缓存的AFRESTAPI_Json_Caching_Afnetworking_Etag_Nsmutableurlrequest - Fatal编程技术网

Json 带有Etag缓存的AFRESTAPI

Json 带有Etag缓存的AFRESTAPI,json,caching,afnetworking,etag,nsmutableurlrequest,Json,Caching,Afnetworking,Etag,Nsmutableurlrequest,我试图在使用AFNetworking发送的GET请求中实现etag缓存,但似乎找不到一个具有AFNetworking REST API~和~缓存的解决方案。需要显示如何发送GET/POST和控制缓存的示例代码。我现在拥有的只是请求,而不是缓存: NSString *path = @"path/to/my.json"; AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:self.baseNSURL]; [client regi

我试图在使用AFNetworking发送的GET请求中实现etag缓存,但似乎找不到一个具有AFNetworking REST API~和~缓存的解决方案。需要显示如何发送GET/POST和控制缓存的示例代码。我现在拥有的只是请求,而不是缓存:

NSString *path = @"path/to/my.json";
AFHTTPClient *client = [[AFHTTPClient alloc] initWithBaseURL:self.baseNSURL];
[client registerHTTPOperationClass:[AFJSONRequestOperation class]];
[client setDefaultHeader:@"Accept" value:@"application/json"];
[client getPath:path
     parameters:nil
        success:^(AFHTTPRequestOperation *operation, id responseObject) {
            NSLog(@"%@",responseObject);
        }
        failure:^(AFHTTPRequestOperation *operation, NSError *error) {
            NSLog(@"%@",error);
        }
 ];
和传出标头(无缓存控制):

获取路径/to/my.json HTTP/1.1 主持人:x.y.com:80 接受编码:gzip,deflate 接受:application/json Cookie:PHPSESSID=35gojgf7s35n8fljlvd5pjudfn0 连接:保持活力 接受语言:en、fr、de、ja、nl、it、es、pt、pt、da、fi、nb、sv、ko、zh-Hans、zh-Hant、ru、pl、tr、uk、ar、hr、cs、el、he、ro、sk、th、id、ms、en-GB、ca、hu、vi、en-us;q=0.8 用户代理:myApp/1.0(iPhone模拟器;iOS 6.1;缩放/1.00)
X-Forwarded-For:192.130.1.00

AFNetworking只遵循NSURLRequest/NSURLCache规则。因此,您需要以这种方式将缓存控制头添加到缓存到磁盘。如果您想对磁盘缓存进行更多的手动控制,也可以使用(或修改)。

您能显示一些代码吗?另外,我是否需要使用核心数据来保存每个etag的响应,或者它已得到处理?请参阅-您不需要在核心数据中放入任何内容,只需确保您的HTTP头在两种方式下都设置正确。感谢链接。我已经在我的应用程序委托中实现了NSURLCache,如教程所述。但我仍然没有在我的响应标题中获得etag。我知道服务器给出了一个etag。我需要在我的请求头中放置一些内容吗?如果是,什么?一行代码比一个链接更有帮助!谢谢你为什么认为服务器会给出一个etag,如果它不在你的响应头中呢?好的,经过一个漫长的夜晚,我们意识到我们使用的Rest工具正在获取etag,但是由于某种原因,当我们使用电话时,服务器没有。我们怀疑这是因为服务器正在压缩数据,在我们的设置中,阻止了etag。图灵关闭gzip使它通过。但是仍然需要让代码与更改一起工作。如果我们能成功,几天后我会告诉你的。