我使用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是在Lan上开发的,而服务器在Lan上,那么一切正常。 但是当我的Mac mini在WiFi上而我的服务器在Wifi上时,我收到了这个错误......
答案 0 :(得分:2)
嗯,我的第一个问题是你是否尝试过在Objective-C / iOS 7中使用相同的逻辑/代码完成相同的任务?如果它是Swift,iOS 8中的问题或代码中的问题,这将使我们了解它。如果有,请在编辑/更新中发布此代码。
第二个问题:你为什么要重写接受编码?许多服务器需要 if 指定标头值。最好删除它。
第三个问题:您运行的是什么版本的iOS 8测试版? FWIW,对SO的简单搜索显示了这个问题: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost."
因此它可能是iOS 8测试版中的错误。我建议首先尝试使用objective-c,如果这也打破了,请转到开发人员论坛并发布您的问题以获得Apple的关注。您可能还想为它打开雷达。
答案 1 :(得分:0)
我通过删除我的Wi-Fi网络连接并通过从网络连接列表中选择并再次提供密码来重新实例化,从而彻底解决了这个问题。请参阅页面底部的堆栈溢出响应:
NSURLConnection GET request returns -1005, "the network connection was lost"