Frage

Ich bin mit einem NSMutableURLRequest auf eine Website zu verbinden, eine JSON-Antwort zu erhalten. Ich mache so durch die Anfrage zu erzeugen, und dann NSURLConnection Verwendung mit einem Delegierten der Selbst von der Asynchron-Verbindung zu behandeln. Ich habe alle normalen Delegatmethoden implementiert:

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

Alle arbeiten perfekt mit Daten immer wieder, mit allen möglichen Fehlern zu tun, die auftreten, usw. Jedoch mit dem Timeout auf dem NSURLRequest auf 10 Sekunden, die ich offenbar nicht in diesen Verfahren genannt werden (erwartete ich die didFailWithError genannt werden ). Es sitzt nur da für immer und ich habe keine Benachrichtigung, dass es abgelaufen.

Beim Lesen der iPhone API-Dokumentation Ich sehe keine Erwähnung, was sollte passieren, wenn das Timeout auftritt, nur, dass Sie den Timeout-Wert festlegen. Was soll passieren? Ich habe keine andere Delegatmethoden in der API, die helfen würde. Ich habe nicht manuell für Timeouts zu überprüfen, kann ich tun? Sind Timeouts nur für synchrone Anforderungen?

War es hilfreich?

Lösung

Ihr Timeout wird in diesem Verfahren erhalten:

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

Andere Tipps

u wird br solche Art von iofo Empfang:

mit versäumte

  

Fehler: Fehler Domain = NSURLErrorDomain-Code = -1.001 = Userinfo 0xed4870   "Timed out"

Das Timeout Verhalten ein wenig schrullig ist, finden Sie unter diesem Thema auf Apples Entwickler-Foren.

Was ich tat, war dies:

- (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.
    }
}

Wie gesagt -1001 für Timeout ist, in anderen Tests, die ich bekam -1003 (für schlechte URL oder ohne Verbindung avaliable).

Ich wurde mit dem Ziel Timeout zu behandeln, so alles, was ich so schlecht URL behandelt.

Legen Sie einige Log-Anweisungen in jedem Verfahren und überprüfen, was sie geben. Immer dann, wenn es mal aus, Sie auf jeden Fall eine Benachrichtigung auf der Konsole über das Timeout bekommen. Ich erhalte diese Meldung. Überprüfen Sie den Code, und wenn Sie immer noch Probleme haben, lassen Sie es uns wissen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top