Swift NSURLConnection立即返回1005错误

时间:2015-03-31 15:08:59

标签: ios swift nsurlconnection

我正在开发一个用swift编写的新应用程序,我已经看到这个错误信息已经发出垃圾邮件说:重新启动模拟器。

太糟糕了,似乎在我的情况下这不是答案,用Objective-C编写的旧应用程序似乎使用完全相同的方法确实可以正常工作,但是当我对Api(我们的)进行NSUrlConnection调用时它似乎不适用于新的应用程序。

响应是一个适当的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 **");
        }

    }

相关的侦听器(该类实现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;
}

显然我更换了公司名称和确切的被叫网址,因为我无法分享这些,我可以保证这些是正确的。

有没有人看到导致我的组织的错误?

2 个答案:

答案 0 :(得分:0)

哭了好几个小时,直到我睡着了,醒来然后重新开始工作,它再次神奇地起作用。

感谢奥巴马! 无论如何,只要确保清除除xcode之外的所有数据,这可能会导致这些问题,而不仅仅是重新启动模拟器。

答案 1 :(得分:0)

错误是"网络连接丢失"。

这是您在任何时候都必须预料到的错误,因为您的应用用户可能会随时丢失其网络连接。它可以随时回来。

解决问题无权。你必须应对它,例如当它发生时不会崩溃,而不是悬挂。用户解决问题的能力也不在其中。

较旧的应用程序运行正常,因为您在网络连接未丢失的不同时间使用它。而且似乎不应该哭,你应该考虑发生了什么。如果您的网络连接丢失,除了等待,您无能为力。

你所尝试的所有这些事情都是毫无意义的;没有什么能解决丢失的网络连接。 (好吧,在我的家里,确保没有人踢过将路由器连接到电话插头的电缆会有帮助)。