1

所以我要做的就是在某个地方提供一个 .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 服务器中运行,都会出现这个问题。它只是不断返回所请求资源的旧版本。

我对此感到非常困惑:所以任何帮助将不胜感激!

4

2 回答 2

0

确保 url 请求没有缓存数据。我必须实现以下内容,以便每次获取新的 json 数据。

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5];
于 2013-10-13T18:26:50.237 回答
0

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

为此,您可以使用以下内容:

[aclient requestWithMethod:@"GET"
                      path:[NSString stringWithFormat:@"voucher.json?%@", [NSDate date]]
                parameters:nil];
于 2013-10-13T18:32:38.967 回答