AFJSONRequestOperation / AFHTTPClient获取旧数据

时间:2013-01-09 16:04:08

标签: ios objective-c json http afnetworking

所以我要做的就是在某个地方提供一个.json文件(我已经尝试了我自己的个人服务器,也在AppFog上),然后在iOS平台上使用AFJSONRequestOperation执行GET请求。我执行此请求的代码如下:

AFHTTPClient *aclient = [[AFHTTPClient alloc] initWithBaseURL:[NSURL URLWithString:kBaseURL]];
NSURLRequest *request = [aclient requestWithMethod:@"GET"
                                           path:@"voucher.json"
                                     parameters:nil];

AFJSONRequestOperation *op = [[AFJSONRequestOperation alloc] initWithRequest:request];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"%@", (NSString *)responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

[op start];

这里的问题是,.json文件最初包含一个包含2个字符串的数组。上面的代码可以很好地获取这些对象。然后,如果我用另外3个字符串编辑.json文件,重新运行代码将继续只获取2个旧字符串。

在我对.json文件进行更改后仅10-15分钟,刷新就会给我更新的数据。起初我认为这是一个缓存问题,但设置[client setCachingPolicy: ]没有任何区别。

无论是在我的静态服务器上托管我的.json文件,还是在AppFog上的Node Express服务器上运行,都会出现此问题。 它只是不断返回所请求资源的旧版本。

我真的对此感到困惑:所以任何帮助都会非常感激!

2 个答案:

答案 0 :(得分:0)

确保网址请求不缓存数据。我必须实现以下内容,因此每次进行提取时我都会获得新的json数据。

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5];

答案 1 :(得分:0)

这可能是一个缓存问题 - 您可以更改请求中的缓存策略或将某些内容附加到查询字符串上,例如当前时间。

要做到这一点,你可以使用类似的东西:

[aclient requestWithMethod:@"GET"
                      path:[NSString stringWithFormat:@"voucher.json?%@", [NSDate date]]
                parameters:nil];