2014-09-03 110 views
8

我使用Xcode beta6。 我创建了一个应用程序,它有一个下载器类,这是下载类:为什么NSURLConnection失败,错误域= NSURLErrorDomain代码= -1005“网络连接丢失。”在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) 
    } 

} 

该类运作良好,并得到正确的JSON结果时,服务器与局域网电缆在网络上,但是当这台服务器连接通过WiFi相同的网络我得到这个错误来自iOS设备:

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

但它确实很奇怪,因为如果我粘贴因此,只有在iOS设备上不能处理的JSON路径,我看到了JSON的浏览器..,但我不知道我应该修复什么.. 任何人都可以帮助我吗?

因此,如果我的Mac mini用于开发的是Lan,而服务器是Lan,则一切正常。 但是,当我的Mac mini上的WiFi和我的服务器上的无线上网我得到这个错误...

+0

退出模拟器并重新运行项目。 – 2015-08-27 05:50:18

+4

[NSURLConnection GET请求可能重复-1005,“网络连接丢失”](http://stackoverflow.com/questions/25797339/nsurlconnection-get-request-returns-1005-the-network-connection-was -lost) – Mogsdad 2015-12-09 16:27:41

回答

2

嗯,我的第一个问题是你尝试完成相同的任务使用相同的逻辑/ IOS 7?这会给我们一个想法,如果这是Swift,iOS 8中的问题,或者是代码中的问题。如果有,请在编辑/更新中发布此代码。

第二个问题:为什么你重写accept-encoding?如果指定了标头值,许多服务器需要那里的东西。最好删除。

第三个问题:您运行的是哪个版本的iOS 8测试版? FWIW,SO的一个简单的搜索显示了这个问题: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."

所以它可能是一个iOS 8测试版的错误。我建议首先尝试objective-c,如果这也打破了,转到开发者论坛并发布你的问题,以获得苹果的关注。你可能也想为它打开一个雷达。

+0

有没有修复?我正在使用iOS8(第一个公开发行版)和Objective-C遇到同样的问题,但仅限于我家的WiFi。该错误不会发生在我尝试的办公室或其他WiFi网络上。当我蜷缩端点时,它工作正常,所以它肯定是NSURLConnection的边缘问题 – user2393462435 2014-09-27 15:17:33

+0

这是一组不同的情况,所以可能需要一个新的问题(随时与适当的日志链接,我会看看)。说,你有没有在我的答案链接上看到后面的答案?在iOS 8的NSURLConnection上,HTTP Keep-alive似乎有些不可思议。也许这是做的? – 2014-09-28 18:32:06

+0

啊,我完全错过了你的链接。这绝对是一个永恒的问题。谢谢。 – user2393462435 2014-09-28 19:31:39

0

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

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

+2

如果这个问题可以通过您的其他堆栈溢出帖子回答,那么您应该将此问题标记为重复,而不是发布答案... – nhgrif 2015-06-15 00:55:37

相关问题