0

私はこの問題に何時間も取り組んできましたが、理解できません。

私のサーバーは、ユーザーが新しい関数で更新できるWSDLファイルを作成し、WSDLファイルはそれらの変更を反映するように更新されます。AFHTTPRequestOperationwithを使用しGETてそのファイルを取得しているので、ファイルにどの関数が存在するかを確認できます。

何らかの理由で、ユーザーがファイルを更新して再生成した後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 に答える