0

ここに投稿されたコードを使用しています:
connectionDidFinishLoadingの接続解放メソッドでエラーが発生します

最初の実行で didFail ログが返されるようになりました。2 回目の実行。古い応答データを返します。私の(localhost)サーバーは完全にオフラインですが。cachePolicy は NSURLCacheStorageNotAllowed です (上に投稿したリンクのコードを確認してください)

 NSMutableURLRequest *request=
[NSMutableURLRequest requestWithURL:url 
cachePolicy:NSURLCacheStorageNotAllowed timeoutInterval:3.0f];

応答データはどこかにキャッシュされているようで、まだ存在しています。

しかし、私が NSURLRequestReloadIgnoringLocalAndRemoteCacheData を使用する場合 //これは -実装されていません - とコメントされています

古いキャッシュを返しません。

しかし、もしそうなら、次の違いは何ですか:
NSURLRequestReloadIgnoringLocalAndRemoteCacheData

NSURLCacheStorageNotAllowed

何をすればよいでしょうか ?

4

2 に答える 2

2

NSURLCacheStorageNotAllowedenumを参照しNSCachedURLResponse、その値ですNSURLCacheStoragePolicy。のキャッシュ ポリシーNSMutableURLRequestも enum( NSURLRequestCachePolicy) であるため、静的メソッドの作成に間違った int を渡すだけですNSMutableURLRequest。この場合NSURLCacheStorageNotAllowedはちょうど 2 で、これは - に等しいためNSURLRequestReturnCacheDataElseLoad、古いデータが取得されます。

于 2014-07-16T14:47:05.423 に答える
0

これを試して

NSString *Post = [[NSString alloc] initWithFormat:@"Post Parameters"]; NSURL *Url = [NSURL URLWithString:@"Url"];

    NSData *PostData = [Post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *postLength = [NSString stringWithFormat:@"%d", [PostData length]];

    NSMutableURLRequest *Request = [[NSMutableURLRequest alloc] init];
    [Request setURL:Url];
    [Request setHTTPMethod:@"POST"];
    [Request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [Request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [Request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [Request setHTTPBody:PostData];
  NSError *error;
    NSURLResponse *response;

    NSData *Result = [NSURLConnection sendSynchronousRequest:Request returningResponse:&response error:&error];
    if (!Result)
    {
        NSLog(@"Error");
    }
    else
    {
       //Parse the result
    }
于 2013-09-02T08:03:32.813 に答える