Swift NSURLConnection returns 立即出现 1005 错误
Swift NSURLConnection returns instantly with a 1005 error
我正在开发一个用 swift 编写的新应用程序,我看到这条错误消息到处都是,所以说:重新启动模拟器。
太糟糕了,在我的情况下这似乎不是答案,用 objective-C 编写的旧应用程序似乎使用完全相同的方法确实工作正常,但是当我对 NSUrlConnection 调用Api(我们的)它似乎不适用于新应用程序。
响应是一个正确的 200,带有一些 json 数据,没有重定向它在我同时开发的 Android 应用程序上工作正常。
基本上我有:
func getRequest() -> NSMutableURLRequest {
let request = NSMutableURLRequest(URL: NSURL(string: package.fullPath)!)
request.HTTPMethod = package.apiMethod.description;
request.HTTPBody = "hi".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
return request;
}
func execute() {
conn = NSURLConnection(request: getRequest(), delegate: self);
if let c = conn {
Debug.log("** api-connection-start **");
}
}
相关监听器(class 实现 NSURLConnectionDataDelegate):
func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
Debug.log("** api-recieved-url-response? **")
let httpResponse = response as NSHTTPURLResponse
statusCode = httpResponse.statusCode
}
func connection(connection: NSURLConnection!, didReceiveData data: NSData!) {
Debug.log("** api-recieving-data **")
self.responseData.appendData(data)
}
func connection(connection: NSURLConnection, didFailWithError error: NSError) {
Debug.log("** api-fail-with-error **")
ErrorClass.message(error)
if let responseListener = listener {
responseListener.onError(package, error:error)
}
}
我在所有这些辅助方法上都有断点,只有 didFailWith 错误会立即调用,错误包含:
2015-03-31 16:58:29.853 myappname[537:4136] {
NSErrorFailingURLKey = "http://xxxxxxxx/valid/api/call";
NSErrorFailingURLStringKey = "http://xxxxxxxx/valid/api/call";
NSLocalizedDescription = "The network connection was lost.";
NSUnderlyingError = "Error Domain=kCFErrorDomainCFNetwork Code=-1005 \"The network connection was lost.\" UserInfo=0x7fdf3bc465d0 {NSErrorFailingURLStringKey=http://xxxxxxxx/valid/api/call, NSErrorFailingURLKey=http://xxxxxxxx/valid/api/call, _kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4, NSLocalizedDescription=The network connection was lost.}";
"_kCFStreamErrorCodeKey" = "-4";
"_kCFStreamErrorDomainKey" = 4;
}
显然我替换了公司名称和确切的名称url,因为我不能分享这些,但我可以保证这些是正确的。
有没有人看出我的纸巾有误?
哭了好几个小时直到我睡着,然后醒来又回到工作中,它又神奇地起作用了。
谢谢奥巴马!
无论如何,除了清理之外,请确保从 xcode 中清除所有数据,很遗憾,这也可能导致这些问题,而不仅仅是重新启动模拟器。
错误是"network connection lost"。
这是一个您必须随时预料到的错误,因为您的应用程序的用户可能随时失去他们的网络连接。它可以随时回来。
您无权解决该问题。你必须应对它,例如在它发生时不要崩溃,也不要挂起。用户也无权解决问题。
旧版应用运行良好,因为您在网络连接未丢失的不同时间使用过它。似乎你不应该哭,而应该想想发生了什么。如果您的网络连接丢失,除了等待之外您无能为力。
而你一直在尝试的所有这些事情都是毫无意义的;没有什么可以修复丢失的网络连接。 (好吧,在我家确保没有人踢到连接路由器和 phone 插头的电缆会有所帮助)。
我正在开发一个用 swift 编写的新应用程序,我看到这条错误消息到处都是,所以说:重新启动模拟器。
太糟糕了,在我的情况下这似乎不是答案,用 objective-C 编写的旧应用程序似乎使用完全相同的方法确实工作正常,但是当我对 NSUrlConnection 调用Api(我们的)它似乎不适用于新应用程序。
响应是一个正确的 200,带有一些 json 数据,没有重定向它在我同时开发的 Android 应用程序上工作正常。
基本上我有:
func getRequest() -> NSMutableURLRequest {
let request = NSMutableURLRequest(URL: NSURL(string: package.fullPath)!)
request.HTTPMethod = package.apiMethod.description;
request.HTTPBody = "hi".dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: true)
return request;
}
func execute() {
conn = NSURLConnection(request: getRequest(), delegate: self);
if let c = conn {
Debug.log("** api-connection-start **");
}
}
相关监听器(class 实现 NSURLConnectionDataDelegate):
func connection(connection: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
Debug.log("** api-recieved-url-response? **")
let httpResponse = response as NSHTTPURLResponse
statusCode = httpResponse.statusCode
}
func connection(connection: NSURLConnection!, didReceiveData data: NSData!) {
Debug.log("** api-recieving-data **")
self.responseData.appendData(data)
}
func connection(connection: NSURLConnection, didFailWithError error: NSError) {
Debug.log("** api-fail-with-error **")
ErrorClass.message(error)
if let responseListener = listener {
responseListener.onError(package, error:error)
}
}
我在所有这些辅助方法上都有断点,只有 didFailWith 错误会立即调用,错误包含:
2015-03-31 16:58:29.853 myappname[537:4136] {
NSErrorFailingURLKey = "http://xxxxxxxx/valid/api/call";
NSErrorFailingURLStringKey = "http://xxxxxxxx/valid/api/call";
NSLocalizedDescription = "The network connection was lost.";
NSUnderlyingError = "Error Domain=kCFErrorDomainCFNetwork Code=-1005 \"The network connection was lost.\" UserInfo=0x7fdf3bc465d0 {NSErrorFailingURLStringKey=http://xxxxxxxx/valid/api/call, NSErrorFailingURLKey=http://xxxxxxxx/valid/api/call, _kCFStreamErrorCodeKey=-4, _kCFStreamErrorDomainKey=4, NSLocalizedDescription=The network connection was lost.}";
"_kCFStreamErrorCodeKey" = "-4";
"_kCFStreamErrorDomainKey" = 4;
}
显然我替换了公司名称和确切的名称url,因为我不能分享这些,但我可以保证这些是正确的。
有没有人看出我的纸巾有误?
哭了好几个小时直到我睡着,然后醒来又回到工作中,它又神奇地起作用了。
谢谢奥巴马! 无论如何,除了清理之外,请确保从 xcode 中清除所有数据,很遗憾,这也可能导致这些问题,而不仅仅是重新启动模拟器。
错误是"network connection lost"。
这是一个您必须随时预料到的错误,因为您的应用程序的用户可能随时失去他们的网络连接。它可以随时回来。
您无权解决该问题。你必须应对它,例如在它发生时不要崩溃,也不要挂起。用户也无权解决问题。
旧版应用运行良好,因为您在网络连接未丢失的不同时间使用过它。似乎你不应该哭,而应该想想发生了什么。如果您的网络连接丢失,除了等待之外您无能为力。
而你一直在尝试的所有这些事情都是毫无意义的;没有什么可以修复丢失的网络连接。 (好吧,在我家确保没有人踢到连接路由器和 phone 插头的电缆会有所帮助)。