/ / NSURLConnection-Wiederholungsanfrage - iphone, object-c, xcode, ipad

NSURLConnection Wiederholungsanfrage - iphone, objective-c, xcode, ipad

Wie kann ich eine Wiederholung einer NSURLConnection anfordern? Kann ich in meiner connectionDidFinishLoading-Methode die Verbindung speichern und später erneut versuchen?

Ich schaute auf [Verbindungsstart], aber das schien nichts zu tun. Enthält das Verbindungsobjekt noch die ursprüngliche Anforderung?

Vielen Dank

Antworten:

6 für die Antwort № 1

Es wird nicht explizit angegeben, aber trotzdem Dokumentation schlägt vor, dass NSURLConnection Instanz ist nicht zur Wiederverwendung bestimmt:

NSURLConnection behält seinen Delegaten bei der Initialisierung bei. Sie gibt den Delegaten frei, wenn die Verbindung vollständig geladen ist, fehlschlägt oder abgebrochen wird.

Wenn Delegate bereits freigegeben ist, hat es keinen Sinn, das Verbindungsobjekt wieder zu beleben.


0 für die Antwort № 2

Wenn ich du wäre, würde ich es mir ansehen ASIHTTPAnfrage, das ist viel einfacher zu bedienen als daseingebautes NSURLConnection-Geschäft, aber auch wesentlich mehr. Sie können die Anzahl der Wiederholversuche, das Fail-Timeout und grundsätzlich jeden Aspekt einer HTTP-Anforderung angeben.


0 für die Antwort № 3

Sie können dieses Problem lösen, indem Sie das Original behalten NSMutableURLRequest Objekt erstellen und die Verbindung erneut herstellen, auf Swift sieht es ungefähr so ​​aus:

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