1

キャッシュを設定しようとしていますが、「以下のように」使用しているメソッドがスレッドからアクセスされていません。

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse

このように接続を初期化していますが、connectionDidFinishLoadingにアクセスしているので、何が欠けているのかわかりません。

- (IBAction)searchRequest:(NSData *)postBodyData
{
    //Set database address
    NSMutableString *databaseURL = [[NSMutableString alloc] initWithString:@"https://127.0.0.1:88"]; 

    NSURL *url = [NSURL URLWithString:databaseURL];

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

    //SynchronousRequest to grab the data, also setting up the cachePolicy
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:5.0]; //if request dose not finish happen within 60 second timeout.

//    NSInputStream *fileStream = [NSInputStream inputStreamWithData:postBodyData];


    [request setHTTPMethod: @"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/octet-stream" forHTTPHeaderField:@"content-type"];
    [request setHTTPBody:postBodyData];

    NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:request delegate:self];

    if (theConnection) {
        // Create the NSMutableData to hold the received data.
        // receivedData is an instance variable declared elsewhere.
        receivedData = [NSMutableData data];
    } else {
        // Inform the user that the connection failed from the connection:didFailWithError method
    }
}

どんな助けでもいただければ幸いです。

4

1 に答える 1

2

connection:willCacheResponse:応答がキャッシュされる場合にのみ呼び出されます。ほとんどの場合、POST リクエストはキャッシュできません。(詳細: HTTP で POST メソッドをキャッシュすることは可能ですか? )

おそらく、特に REST プロトコルの場合、この種のキャッシングの多くを処理するMKNetworkKitのようなものを検討する必要があります。

UIWebView のドロップイン オフライン キャッシングも参照してください。大幅に変更する必要がありますが、NSURLProtocolこの種の問題を解決するために使用できます。AFCacheは現在、このアプローチの統合に取り組んでおり、考慮すべきもう 1 つのツールキットです。(問題の背景については、ブログ投稿のコメントをお読みください。)

于 2012-03-30T01:16:13.540 に答える