2010-07-28 12 views
1

J'utilise NSURLConnection comme çaRecevoir les données du cache après le code d'état HTTP 204 Recevied

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    if ([response isKindOfClass:[NSHTTPURLResponse class]]) 
    { 
     int code = [(NSHTTPURLResponse*)response statusCode]; 
    } 
} 

Je reçois une réponse dont statusCode est 204, alors j'envoie une autre demande, mais toutes les réponses que je reçus après il retournera 204, howerver le spectacle tcpdump que le retour serveur 200. Mais après une minute, il retournera 200.

Je pensais que ce serait peut-être quelque chose de mal à propos de cache, howerver i mis cachePolicy à NSURLRequestReloadIgnoringLocalCacheData et aussi je fais [[NSURLCahce sharedCache] removeAllCachedResponses] avant nouvelle demande.

Mais cela ne fonctionne pas. encore je vais prendre 204 après la première 204, si j'envoie la demande après une minute, 200 sera obtenir.

Est-ce la faute du cache? que puis-je faire ensuite?

PS: après 204 est arrivé, si j'envoie une autre demande, la réponse est arrivée immédiatement, semble qu'il n'a pas été sent.howerver, tcpdumps Fixateurs l'envoi.

Répondre

0

Jetez un oeil à la méthode NSURLRequest classe "requestWithURL: cachePolicy: timeoutInterval:". Là, vous pouvez régler la cachePolicy en tant que valeur NSURLRequestCachePolicy, par exemple NSURLRequestReloadIgnoringLocalCacheData. Cela ne tient pas compte des caches de la demande stockée localement.

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

merci pour votre réponse, mais j'ai essayé de cette façon, cela ne fonctionne pas Kensou – Kensou