2014-09-03 11 views
8

Ich benutze Xcode beta6. Ich habe eine App, die eine Downloader-Klasse hat, und dies ist die Downloader Klasse:Warum NSURLConnection fehlgeschlagen ist mit Fehlerdomäne = NSURLErrorDomain Code = -1005 "Die Netzwerkverbindung wurde unterbrochen." in Swift iOS8?

class Downloader : NSObject { 

    private var _connection : NSURLConnection? 
    private var _downloadedData: NSMutableData? 

    func getDataFromURLString(urlToRequest: String!, aType: DownloadedDataType) { 

     _downloadedData = NSMutableData() 

     var request : NSMutableURLRequest = NSMutableURLRequest(URL: NSURL(string: urlToRequest), cachePolicy: .ReloadIgnoringLocalCacheData, timeoutInterval: 20.0) 
     request.setValue("", forHTTPHeaderField: "Accept-Encoding") 

     self._connection = NSURLConnection(request: request, delegate:self) 
    } 

    func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!) { 
     println("Data expected size: \(response.expectedContentLength)") 
    } 

    func connectionDidFinishLoading(connection: NSURLConnection!) { 
     println("finished") 
    } 

    func connection(connection: NSURLConnection!, didFailWithError error: NSError!) { 
     println("error: \(error)") 
    } 

    func connection(connection: NSURLConnection!, didReceiveData data: NSData!) { 
     _downloadedData?.appendData(data) 
    } 

} 

Diese Klasse funktioniert gut und das Recht JSON Ergebnis erhalten, wenn der Server im Netzwerk mit LAN-Kabel ist aber, wenn dieser Server verbunden .. also nur auf iOS-Geräte können nicht handhaben,

Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." 

aber es ist wirklich komisch, denn wenn ich den json Pfad zum Browser einfügen ich die json sehen: mit dem gleichen Netzwerk über WiFi ich diesen Fehler aus dem iOS-Gerät erhalten aber ich weiß nicht, was ich beheben sollte. Kann mir jemand helfen?

Also wenn mein Mac mini, was ich zu entwickeln verwenden, ist auf Lan, und der Server ist auf Lan, alles funktioniert gut. Aber wenn mein Mac mini auf WiFi ist und mein Server auf Wifi ist, bekomme ich diesen Fehler ...

+0

Simulator beenden und erneut ausführen Ihr Projekt. –

+4

Mögliches Duplikat von [NSURLConnection GET-Anforderung gibt -1005 zurück, "die Netzwerkverbindung wurde verloren"] (http://stackoverflow.com/questions/25797339/nsurlconnection-get-request-returns-1005-the-network-connection-was -lost) – Mogsdad

Antwort

2

Nun, meine erste Frage ist, haben Sie versucht, die gleiche Aufgabe mit der gleichen Logik/Code in Objective-C/iOS 7? Dies würde uns eine Idee geben, wenn es ein Problem in Swift, iOS 8 oder ein Problem in Ihrem Code ist. Wenn ja, poste diesen Code bitte in einem Edit/Update.

Zweite Frage: Warum überschreiben Sie die Annahme-Codierung? Viele Server benötigen dort etwas wenn Sie den Header-Wert angeben. Am besten, das zu entfernen.

Dritte Frage: Welche Version von iOS 8 Beta laufen Sie? FWIW, eine einfache Suche nach SO zeigte diese Frage: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."

so könnte es ein Fehler in iOS 8 Beta sein. Ich würde vorschlagen, objektive c zuerst zu versuchen, und wenn das auch bricht, gehen Sie zu den Entwicklerforen und veröffentlichen Sie Ihr Problem, um Apples Aufmerksamkeit darauf zu bekommen. Vielleicht möchten Sie auch ein Radar dafür öffnen.

+0

Gibt es eine Lösung? Ich habe das gleiche Problem mit iOS8 (erste öffentliche Version) und Objective-C, aber nur auf meinem Heim-WiFi. Der Fehler tritt nicht in meinem Büro oder anderen WiFi-Netzwerken auf, die ich versuche. Wenn ich den Endpunkt kräusele funktioniert es gut, also ist es definitiv ein Randproblem mit NSURLConnection – user2393462435

+0

Das ist eine andere Reihe von Umständen, so dass wahrscheinlich eine neue Frage gerechtfertigt ist (fühlen Sie sich frei, mit entsprechenden Logs zu verknüpfen, und ich werde einen Blick darauf werfen.) sagten Sie, haben Sie die späteren Antworten auf dem Link meiner Antwort gesehen? Es scheint etwas seltsam zu sein mit HTTP Keep-Alive auf iOS 8s NSURLConnection. Vielleicht macht es das? –

+0

Ahh, ich habe deinen Link komplett vermisst. Es ist definitiv das gleiche Keep-Alive-Problem. Vielen Dank. – user2393462435

0

Ich löste dieses Problem vollständig, indem ich meine Wi-Fi-Netzwerkverbindung löschte und erneut instanziierte, indem ich sie aus der Netzwerkverbindungsliste auswählte und das Kennwort erneut zur Verfügung stellte. Sehen Sie meinen Stack-Überlauf Antwort hier am unteren Rand der Seite:

NSURLConnection GET request returns -1005, "the network connection was lost"

+2

Wenn diese Frage von Ihrem anderen Stack Overflow Beitrag beantwortet werden kann, dann sollten Sie diese Frage als ein Duplikat markieren, anstatt eine Antwort zu posten ... – nhgrif