Comment puis-je demander une nouvelle tentative sur un NSURLConnection? Dans ma méthode connectionDidFinishLoading, est-il possible de stocker puis de réessayer la connexion?
J'ai regardé [connexion début], mais cela ne semble rien faire. L'objet de connexion contient-il toujours la demande d'origine?
Merci
Réponses:
6 pour la réponse № 1Ce n'est pas indiqué explicitement, mais toujours Documentation suggère que NSURLConnection
instance n'est pas destiné à être réutilisé:
NSURLConnection conserve son délégué lors de son initialisation. Il libère le délégué lorsque la connexion est terminée, échoue ou est annulée.
Si délégué est déjà libéré, il ne sert à rien de réanimer un objet connexion.
0 pour la réponse № 2
Si j'étais vous, je regarderais ASIHTTPRequest, qui est BEAUCOUP plus facile à utiliser que leNSURLConnection intégré, mais aussi beaucoup plus fonctionnel. Vous pouvez spécifier le nombre de tentatives à réessayer, le délai d'expiration en cas d'échec et, fondamentalement, tous les aspects d'une requête HTTP.
0 pour la réponse № 3
Vous pouvez résoudre ce problème en conservant l'original NSMutableURLRequest
et créer à nouveau la connexion, sur Swift cela ressemble à ceci:
class MyConnectionHandler {
var request:NSMutableURLRequest?
var connection: NSURLConnection?
var retryCount=0
var maxRetries=2
...
functions to setup the request object, and create a connection
----
func connection(connection: NSURLConnection, didFailWithError error: NSError) {
if(retryCount<maxRetries) {
retryCount++
self.connection=NSURLConnection(request: request!, delegate: self, startImmediately: true)
} else {
<throw a tantrum>
}
}