【问题标题】:Receive Cached Data after http status code 204 recevied收到 http 状态码 204 后接收缓存数据
【发布时间】:2010-07-28 07:06:45
【问题描述】:

我像这样使用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捕获发送。

【问题讨论】:

    标签: cocoa caching nsurlconnection


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢你的回答,不过我试过了,kensou不行
    猜你喜欢
    • 2020-04-05
    • 1970-01-01
    • 2012-05-15
    • 2019-11-25
    • 1970-01-01
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多