2009-07-11 8 views
1

Je me suis senti comme si j'avais les mêmes problèmes qu'adressés here. Mais tout ce que j'essaie ne semble pas fonctionner.Télécharger sur iPhone Caching?

Le programme se déroule comme suit:

  • Je demande des informations d'identification de l'utilisateur (nom d'utilisateur/mot de passe)
  • Alors je fais des appels au serveur téléchargement des informations.
  • Lorsque c'est fini, j'affiche un ensemble d'utilisateurs, l'utilisateur clique sur un, puis est demandé le mot de passe pour ce compte
  • Je fais ensuite une autre demande au serveur et vérifie si je reçois la bonne information retour (donc vérifier le nom d'utilisateur/mot de passe juste donné est correct)

Le problème est, le dernier appel est similaire (même URL, différentes informations d'identification) à celui que je fais dans le téléchargement initial. Indépendamment de ce que l'utilisateur place pour les secondes informations d'identification, les informations "correctes" reviennent. Je pense que c'est parce qu'il cache la réponse, mais je n'arrive pas à comprendre comment l'empêcher de le faire.

J'ai une classe qui établit la connexion et renvoie les données téléchargées. Et je fais une nouvelle classe pour chaque connexion. Donc, je ne suis pas vraiment sûr de savoir pourquoi ses données d'économie.

J'ai un NSMutableURLRequest dans lequel je fais ce qui suit:

[theRequest setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; 

(j'ai essayé, et NSURLRequestReloadRevalidatingCacheDataNSURLRequestReloadIgnoringLocalAndRemoteCacheData)

J'ai aussi implemnted les fonctions:

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection 
        willCacheResponse:(NSCachedURLResponse *)cachedResponse { 
return nil; 
} 

- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection { 
return NO; 
} 

Avec le dernier je ne comprends pas complètement. Donc je me suis fatigué OUI et NON. Et j'ai essayé différentes stratégies de cache NSURLRequest.

Toute aide sur ce que mon problème pourrait être serait très utile. Je vous remercie.

Répondre

2

Juste une supposition, mais serait en utilisant

NSURLRequestReloadIgnoringLocalAndRemoteCacheData 

plutôt que

NSURLRequestReloadIgnoringLocalCacheData

faire une différence?

+0

Je ne savais même pas que ça existait, mais non, ça n'a pas marché. D'autres idées? – RyanJM

+1

Qu'en est-il de NSHTTPCookieStorage? Essayez de supprimer les cookies pour l'URL, avant la deuxième demande, ou de définir [[NSHTTPCookieStorage sharedStorage] setCookieAcceptPolicy: NSHTTPCookieAcceptPolicyNever] – mjhoy

+1

Merci! J'ai utilisé [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy: NSHTTPCookieAcceptPolicyNever]; et il a fait exactement ce dont j'avais besoin. – RyanJM