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は、プロトコル データを使用して、リクエストをキャッシュするかどうかを決定します。
たとえば、"Cache-control" または "Expires" ディレクティブが応答ヘッダー ( RFC2616 ) に存在する場合、それらの値を使用して、キャッシュされた応答をそのまま使用できるかどうかが決定されます。
通常、GET リクエストのみがキャッシュされるため、リクエストを取得できdidFailWithErrorますPOST
キャッシュを回避するには、サーバーのヘッダーを修正するか、cachePolicyプロパティをNSURLRequestに設定しますNSURLRequestReloadIgnoringLocalCacheData

于 2013-01-25T09:55:46.083 に答える