Получать кэшированные данные после получения http-кода статуса 204 - PullRequest
1 голос
/ 28 июля 2010

Я использую NSURLConnection, как это

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    if ( [response isKindOfClass:[NSHTTPURLResponse class]])
    {
        int code = [(NSHTTPURLResponse*)response statusCode];
    }
}

Я получаю ответ, у которого statusCode равен 204, затем я отправляю другой запрос, но все ответы, которые я получил после его возвращения, возвращают 204, однако tcpdump показывает, что сервер возвращает 200. Но через минуту он вернется 200.

Я подумал, что это может быть что-то не так с кешем, но я установил cachePolicy в NSURLRequestReloadIgnoringLocalCacheData, а также я делаю [[NSURLCahce sharedCache] removeAllCachedResponses] перед новым запросом.

Но это не работает. Тем не менее, я получу 204 после первых 204, если я отправлю запрос через минуту, получим 200.

Это ошибка кеша? что я могу делать дальше?

PS: после прибытия 204, если я отправляю другой запрос, ответ приходит немедленно, кажется, что он не был отправлен. Однако tcpdumps перехватывает отправку.

1 Ответ

0 голосов
/ 16 января 2011

Взгляните на метод класса NSURLRequest "requestWithURL: cachePolicy: timeoutInterval:".Там вы можете установить cachePolicy как значение NSURLRequestCachePolicy, например NSURLRequestReloadIgnoringLocalCacheData.Это будет игнорировать любые кэши запроса, хранящиеся локально.

NSURLRequest *theRequest =
    [NSURLRequest requestWithURL:theURL
                  cachePolicy:NSURLRequestReloadIgnoringLocalCacheData
                  timeoutInterval:20.0f];
...