收到http状态代码204后接收缓存数据

时间:2010-07-28 07:06:45

标签: cocoa caching nsurlconnection

我像这样使用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到达之后,如果我发送另一个请求,响应立即到达,似乎还没有发送过.hverver,tcpdumps捕获发送。

1 个答案:

答案 0 :(得分:0)

查看NSURLRequest类方法“requestWithURL:cachePolicy:timeoutInterval:”。在那里,您可以将cachePolicy设置为NSURLRequestCachePolicy值,例如NSURLRequestReloadIgnoringLocalCacheData。这将忽略本地存储的请求的任何缓存。

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