Метод cachedResponseForRequest не доступен - PullRequest
1 голос
/ 30 марта 2012

Я пытаюсь настроить кэш, однако используемый мной метод «как показано ниже» не доступен потоку.

- (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
    }
}

любая помощь будет оценена.

1 Ответ

2 голосов
/ 30 марта 2012

connection:willCacheResponse: вызывается только в тех случаях, когда ответ будет кэширован. POST-запросы в большинстве случаев не кэшируются. (Подробнее: Можно ли кешировать POST-методы в HTTP? )

Вероятно, вам следует взглянуть на что-то вроде MKNetworkKit , которое обрабатывает большую часть этого вида кэширования, особенно для протоколов REST.

Вы также можете посмотреть автономное кэширование для UIWebView . Вам придется значительно его изменить, но NSURLProtocol можно использовать для решения этой проблемы. AFCache в настоящее время работает над интеграцией этого подхода и представляет собой еще один инструментарий для рассмотрения. (Прочитайте комментарии в сообщении в блоге для получения дополнительной информации о проблемах.)

...