setHttpMethod奇怪的行为

时间:2013-01-25 06:31:23

标签: iphone ios nsurlconnection nsmutableurlrequest http-method

我在从服务器下载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.仅供参考,我删除了旧的响应数据。
  3. 但问题是,如果我使用[_urlRequest setHTTPMethod:@"POST"];它工作正常,这是

    1. 正常使用互联网
    2. didFailWithError被称为
    3. 可能是什么问题?

1 个答案:

答案 0 :(得分:2)

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