3

URLリクエストでIf Modified sinceヘッダーを送信する方法を知っている人はいますか?

RSS ページが更新されたかどうかを示すステータス コードを取得しようとしています。

更新#1:次のことを行うテストを行うことができました:

NSURL *url = [NSURL URLWithString:self.url];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request addValue:@"Tue, 18 Nov 2014 20:46:46 GMT" forHTTPHeaderField:@"If-Modified-Since"];
[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

    int responseCode = (int)[httpResponse statusCode];
    NSLog(@"All headers: %@", [httpResponse allHeaderFields]);
    NSLog(@"Status code:: %d", responseCode);
}];

奇妙なことに、iOS アプリケーション全体を削除して実行すると、304 ステータス コードが返されます。しかし、If-Modified-Since 値を追加した行をコメントアウトして再実行すると、200 が返されますが、その行のコメントを外して再実行すると、304 エラーは発生しません。戻ってきてください... 200 エラー コードです。304 エラーを元に戻す唯一の方法は、iPhone デバイスからアプリケーション全体を削除することです。

何が起こっているのですか?

4

2 に答える 2

10

これで少し遅れましたが、NSURLConnection は 304 コードを取得するために応答をキャッシュしているため、このような要求を作成する必要があります。

NSURLRequest *request = [NSURLRequest requestWithURL:url
                                         cachePolicy:NSURLRequestReloadIgnoringCacheData
                                     timeoutInterval:60.0];
于 2015-01-16T20:20:39.667 に答える