Handhabung ein NSURLRequest mit timeout bei der Verwendung von Delegaten
Ich bin mit einem NSMutableURLRequest, um eine Verbindung zu einer Website zu bekommen, eine JSON-Antwort. Ich mache so durch die Generierung der Anforderung und Verwendung von NSURLConnection mit einem Delegierten selbst zu behandeln, das async-Verbindung. Ich habe bisher alle normalen delegate-Methoden:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
Funktioniert alles perfekt mit dem abrufen von Daten zurück, Umgang mit Fehlern, die auftreten, etc. Jedoch mit dem timeout auf die NSURLRequest auf 10 Sekunden eingestellt, die ich nicht scheinen, um genannt, in denen die Methoden (die ich erwartet habe didFailWithError genannt, bekommen). Es sitzt einfach da, für immer, und ich habe keine Benachrichtigung, dass es eine Zeitüberschreitung.
Lesen die iPhone-API-docs sehe ich keine Erwähnung von dem, was sollte passiert, wenn das timeout Auftritt, nur, dass Sie können den timeout-Wert einstellen. Was soll passieren? Ich sehe keinen anderen delegieren-Methoden der API, die helfen würde. Ich nicht haben, um manuell überprüfen für timeouts, tun ich? Sind die timeouts nur für synchrone Anfragen?
Für mehr Kontext, sofern es einen Unterschied macht, bin ich mit der Methode gesprochen, in der Antwort für stackoverflow.com/questions/332276/... zu verfolgen, die verbindungen, die ich habe, hervorragend.
Ich sieht aus wie dies vielleicht ein bug in der beta-SDK 3.0, denn sobald der endgültige Veröffentlichung war, es funktionierte wie erwartet.
InformationsquelleAutor Parrots | 2009-08-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre timeout empfangen wird in dieser Methode:
Gefunden:
error.code == NSURLErrorTimedOut
InformationsquelleAutor Corey Floyd
u br Erhalt dieser Art von iofo:
in der Tat scheitern mit
NSURLErrorTimedOut = -1001
InformationsquelleAutor Sandeep Kumar
Den timeout-Verhalten ist ein bisschen skurril, siehe dieser thread auf der Apple developer Foren.
InformationsquelleAutor zoul
Einige log-Anweisungen in jeder Methode und überprüfen Sie, was Sie geben. Wenn es mal aus, man bekommt eine Benachrichtigung auf der Konsole über das timeout. Ich bin immer, dass die Benachrichtigung . Überprüfen Sie Ihren code, und falls Sie dennoch Probleme haben, lassen Sie es uns wissen.
InformationsquelleAutor Sandeep Kumar
Was ich Tat, war dies:
Wie gesagt -1001 ist für timeout, in anderen tests, die ich bekam, -1003 (für schlechte URL oder keine Verbindung verfügbar).
Ich war mit dem Ziel zu behandeln, timeout, so dass alles, was ich behandelt, als schlechte URL.
InformationsquelleAutor Luchini