为什么 NSURLConnection 失败,在 Swift iOS8 中出现错误域=NSURLErrorDomain Code=-1005 "The network connection was l



我使用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)
    }
}

当服务器在带有LAN电缆的网络上时,这个类工作得很好,并获得正确的JSON结果,但当这个服务器通过WiFi连接到同一网络时,我从iOS设备上得到了这个错误:

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

但这真的很奇怪,因为如果我把json路径粘贴到浏览器中,我会看到json。。所以只有在iOS设备上无法处理,但我不知道我应该修复什么。。有人能帮我吗?

所以,如果我用来开发的Mac mini在局域网上,而服务器在局域网上的话,一切都很好。但当我的Mac mini在WiFi上,我的服务器在WiFi上时,我会收到这个错误。。。

好吧,我的第一个问题是,您是否尝试过在Objective-C/IOS7中使用相同的逻辑/代码来完成相同的任务?这将给我们一个想法,如果它是Swift、iOS 8中的问题,或者你的代码中的问题。如果您有,请在编辑/更新中发布此代码。

第二个问题:为什么要覆盖accept编码?如果指定了头值,许多服务器都需要一些东西。最好去掉它。

第三个问题:你运行的是什么版本的iOS 8测试版?FWIW,对SO的简单搜索显示了这个问题:错误域=NSURLError域代码=-1005";网络连接丢失"

所以它可能是iOS8测试版中的一个错误。我建议先尝试objective-c,如果它也坏了,转到开发者论坛并发布你的问题,以引起苹果的注意。你可能还想为它打开一个雷达。

我完全解决了这个问题,删除了我的Wi-Fi网络连接,并通过从网络连接列表中选择它并再次提供密码来重新实例化它。请在页面底部查看我的堆栈溢出响应:

NSURLConnection GET请求返回-1005;网络连接丢失";

最新更新