2014-09-03 11 views
8

Io uso Xcode beta6. Ho creato un app che hanno una classe Downloader, e questa è la classe Downloader:Perché NSURLConnection non è riuscito con dominio errore = NSURLErrorDomain Code = -1005 "La connessione di rete è stata persa." 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) 
    } 

} 

Questa classe funziona bene e ottenere il giusto risultato JSON quando il server è sulla rete con il cavo LAN, ma quando questo server connesso alla stessa rete WiFi ottengo questo errore dal dispositivo iOS:

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

ma è veramente strano, perché se io incollare il percorso jSON al browser vedo il jSON .. Quindi solo sui dispositivi iOS smussano gestiscono, ma non so cosa dovrei aggiustare .. Qualcuno può aiutarmi?

Quindi se il mio Mac mini quello che utilizzo per lo sviluppo è su Lan e il server è su Lan, tutto funziona correttamente. Ma quando il mio Mac mini è su WiFi e il mio server è su Wifi ottengo questo errore ...

+0

Quit simulatore ed eseguire nuovamente il progetto. –

+4

Possibile duplicato di [NSURLConnection GET request returns -1005, "la connessione di rete è stata persa"] (http://stackoverflow.com/questions/25797339/nsurlconnection-get-request-returns-1005-the-network-connection-was -lost) – Mogsdad

risposta

2

Bene, la mia prima domanda è che hai provato a realizzare lo stesso compito usando la stessa logica/codice in Objective-C/iOS 7? Questo ci darebbe un'idea se si tratta di un problema in Swift, iOS 8 o di un problema nel codice. Se si dispone, si prega di inviare questo codice in una modifica/aggiornamento.

Seconda domanda: perché stai ignorando la codifica accept? Molti server richiedono qualcosa lì se si specifica il valore dell'intestazione. Meglio rimuoverlo.

Terza domanda: quale versione di iOS 8 beta è in esecuzione? FWIW, una semplice ricerca di SO ha mostrato questa domanda: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."

quindi potrebbe essere un errore nelle beta di iOS 8. Ti suggerisco di provare prima l'obiettivo-c, e se anche questo si interrompe, vai ai forum degli sviluppatori e pubblica il tuo problema per attirare l'attenzione di Apple. Potresti anche voler aprire un radar per questo.

+0

C'è una soluzione? Sto riscontrando lo stesso problema usando iOS8 (prima versione pubblica) e Objective-C ma solo sul mio WiFi di casa. L'errore non si verifica nel mio ufficio o in altre reti WiFi che cerco. Quando arricciano l'endpoint funziona bene, quindi è sicuramente un problema marginale con NSURLConnection – user2393462435

+0

Questo è un diverso insieme di circostanze, quindi probabilmente giustifica una nuova domanda (sentiti libero di collegarti con i log appropriati e darò un'occhiata.) Detto, hai visto le risposte successive sul link della mia risposta? Sembra esserci qualche stranezza con HTTP Keep-alive su NSURLConnection di iOS 8. Forse lo sta facendo? –

+0

Ah, ho perso completamente il tuo link. È sicuramente lo stesso problema keep-alive. Grazie. – user2393462435

0

Ho risolto completamente questo problema eliminando la mia connessione di rete Wi-Fi e ri-istanzandola scegliendo dall'elenco delle connessioni di rete e fornendo di nuovo la password. Vedere il mio stack overflow di risposta qui nella parte inferiore della pagina:

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

+2

Se questa domanda può essere risolta dall'altro post di Overflow dello stack, è necessario contrassegnare questa domanda come duplicata piuttosto che pubblicare una risposta ... – nhgrif