0

我已经在这个问题上工作了几个小时,但我无法弄清楚。

我的服务器创建了一个 WSDL 文件,用户可以使用新功能对其进行更新,并且 WSDL 文件将更新以反映这些更改。我正在使用AFHTTPRequestOperationwithGET来获取该文件,以便检查文件中存在哪些函数。

出于某种原因,在用户更新文件并重新生成它之后,AFHTTPRequestOperation仍然看到旧版本(缓存?),但是如果我在浏览器中查看相同的 URL,而不是登录到我的网站或任何东西,它会显示新版本的文件。即使尝试wget抓住新副本。

我确保NSURLRequestReloadIgnoringLocalAndRemoteCacheData在我的身上使用,NSMutableURLRequest但这似乎并不重要:

// Setup the connection
NSString *wsdlURL = [NSString stringWithFormat:@"%@?WSDL", site.soapURL];
NSURL *serviceUrl = [NSURL URLWithString:wsdlURL];
NSMutableURLRequest *serviceRequest2 = [NSMutableURLRequest requestWithURL:serviceUrl cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60.0];
[serviceRequest2 setHTTPMethod:@"GET"];

// Create the operation
AFHTTPRequestOperation *operation2 = [[AFHTTPRequestOperation alloc] initWithRequest:serviceRequest2];
[operation2 setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation2, id responseObject2) {

    // Convert data to string
    NSString *wsdlStr = [[NSString alloc] initWithData:(NSData *)responseObject2 encoding:NSUTF8StringEncoding];

} failure:^(AFHTTPRequestOperation *operation2, NSError *error) {
    failure(error);
}];
[operation2 start];

有谁知道为什么它会得到文件的旧副本?浏览器显示新的?

4

1 回答 1

0

我意识到我需要在请求中添加以下内容:

[serviceRequest2 setValue:@"no-cache" forHTTPHeaderField:@"Cache-Control"];
于 2013-01-09T20:03:58.250 回答