Domanda

Io sto usando un NSMutableURLRequest per la connessione a un sito web per ottenere una risposta JSON. Sto facendo così generando la richiesta, e quindi utilizzando NSURLConnection con un delegato di sé per gestire la connessione asincrona. Ho implementato tutte le normali metodi delegato:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection

Tutto funziona perfettamente con ottenere dati indietro, si occupano di tutti gli errori che si verificano, ecc, tuttavia con il timeout sul NSURLRequest impostato a 10 secondi non mi sembra di avere chiamato in quei metodi (mi aspettavo il didFailWithError per ottenere chiamato ). È situata a lì per sempre e non ho alcuna notifica che scaduta.

Leggendo la documentazione API di iPhone non vedo alcuna menzione di ciò che dovrebbe accadere quando si verifica il timeout, solo che è possibile impostare il valore di timeout. Che cosa dovrebbe accadere? Non ho visto altri metodi delegato della API che avrebbe aiutato. Non devo controllare manualmente per i timeout, fare io? Sono timeout solo per le richieste sincrone?

È stato utile?

Soluzione

Il timeout ricevuto in questo metodo:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error

Altri suggerimenti

u br ricevere tale tipo di iofo:

in mancò con

  

di errore: Errore di dominio = Codice NSURLErrorDomain = -1001 UserInfo = 0xed4870   "Scaduta"

Il comportamento di timeout è un po 'eccentrico, vedi questa discussione sul forum degli sviluppatori di Apple.

Quello che ho fatto è stato questo:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    if (error.code == -1001){
        [self showTimeoutAlert];//My method to show dialog with timeout message.
    } else {
        [self showInvalidURLAlert];//My method to show dialog with bad URL message.
    }
}

Come detto prima -1001 è per il timeout, in altri test ho avuto -1003 (per cattivo URL o no avaliable connessione).

Puntavo per il trattamento di timeout in modo da niente altro che trattata così male URL.

Mettere alcune dichiarazioni di log in ogni metodo e controllare quello che danno. Ogni volta che il tempo è scaduto, è sicuramente ottenere una notifica sulla console sul timeout. Io sono sempre tale notifica. Controlla il tuo codice e se vi sono ancora problemi, fatecelo sapere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top