Come posso richiedere un nuovo tentativo su una connessione NSURLC? nel mio metodo connectionDidFinishLoading è possibile archiviare e poi riprovare la connessione?
ho guardato [inizio connessione], ma non sembrava fare nulla. L'oggetto connessione contiene ancora la richiesta originale?
Grazie
risposte:
6 per risposta № 1"Non è dichiarato esplicitamente, ma comunque documentazione suggerisce che NSURLConnection
l'istanza non è destinata al riutilizzo:
NSURLConnection mantiene il suo delegato quando viene inizializzato. Rilascia il delegato quando la connessione termina il caricamento, non riesce o viene annullata.
Se il delegato è già stato rilasciato, non ha davvero senso rianimare l'oggetto connessione.
0 per risposta № 2
Se fossi in te, lo guarderei ASIHTTPRequest, che è MOLTO più facile da usare rispetto albusiness NSURLConnection integrato, ma anche molto più ricco di funzionalità. È possibile specificare il numero di tentativi, il timeout di errore e praticamente tutti gli aspetti di una richiesta HTTP.
0 per risposta № 3
Puoi risolvere questo mantenendo l'originale NSMutableURLRequest
e creare nuovamente la connessione, su Swift è simile al seguente:
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>
}
}