it-swarm.com.ru

Почему произошел сбой NSURLConnection с ошибкой Domain = NSURLErrorDomain Code = -1005 «Сетевое соединение потеряно». в Swift iOS8?

Я использую Xcode beta6. Я создал приложение, которое имеет класс Downloader, и это класс Downloader:

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

}

Этот класс работает хорошо и дает правильный результат JSON, когда сервер находится в сети с кабелем локальной сети, но когда этот сервер подключен к той же сети через WiFi, я получаю эту ошибку с устройства iOS:

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

Но это действительно странно, потому что, если я вставляю путь json в браузер, я вижу json .. Так что только на устройствах iOS не могу справиться, но я не знаю, что мне нужно исправить .. Кто-нибудь может мне помочь?

Так что, если мой Mac mini, который я использую для разработки, находится на Lan, а Сервер на Lan, все работает нормально. Но когда мой Mac mini подключен к сети Wi-Fi, а сервер подключен к сети Wi-Fi, я получаю эту ошибку ...

9
szuniverse

Ну, мой первый вопрос: пытались ли вы выполнить ту же задачу, используя ту же логику/код в Objective-C/iOS 7? Это даст нам представление, если это проблема в Swift, iOS 8 или проблема в вашем коде. Если у вас есть, пожалуйста, разместите этот код в редактировании/обновлении.

Второй вопрос: почему вы переопределяете кодировку принятия? Многие серверы требуют чего-то там , если вы указываете значение заголовка. Лучше всего удалить это.

Третий вопрос: какую версию бета-версии iOS 8 вы используете? FWIW, простой поиск SO показал этот вопрос: Ошибка домена = NSURLErrorDomain Code = -1005 "Сетевое соединение было потеряно."

так что это может быть ошибка в бета-версиях iOS 8. Я бы предложил сначала попробовать цель-c, и если это тоже сломается, зайдите на форумы разработчиков и опубликуйте свою проблему, чтобы привлечь к ней внимание Apple. Вы могли бы также хотеть открыть Радар для этого.

2
Matt S.

Я полностью решил эту проблему, удалив свое сетевое соединение Wi-Fi и повторно установив его, выбрав его из списка сетевых подключений и снова введя пароль. Смотрите мой ответ переполнения стека здесь внизу страницы:

запрос NSURLConnection GET возвращает -1005, "сетевое соединение потеряно"

0
pcJmac