0

我在从服务器下载 xml 文件时遇到了一个奇怪的问题。

我正在尝试使用以下代码获取 schedulist.xml,

- (void) downloadXml:(NSString*)url {

_urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url]];

    [_urlRequest setHTTPMethod:@"GET"];

       if(_urlConnection !=NULL)
        return NO;

    _urlConnection = [[NSURLConnection alloc] initWithRequest:_urlRequest delegate:self startImmediately:YES];

}

问题是 ,

  1. 当互联网可用时,如果我单击按钮下载 xml,很好。正在下载 XML。
  2. 现在关闭互联网,如果我再次单击该按钮,它正在调用didReceiveResponse,didReceiveData and connectionDidFinishLoading.FYI,我已删除旧的响应数据。

但问题是,如果我使用[_urlRequest setHTTPMethod:@"POST"];它工作正常,那就是

  1. 使用互联网正常工作
  2. didFailWithError被叫

可能是什么问题呢 ?

4

1 回答 1

2

默认情况下NSURLRequest使用协议数据来决定是否缓存请求。
例如,如果响应标头(RFC2616)中存在“Cache-control”或“Expires”指令,它们的值将用于决定是否可以按原样使用缓存的响应。
通常只有 GET 请求被缓存,这就是你得到didFailWithError你的POST请求的原因。
为避免缓存,您可以修复服务器上的标头或将cachePolicy属性设置NSURLRequestNSURLRequestReloadIgnoringLocalCacheData

于 2013-01-25T09:55:46.083 回答