代码之家  ›  专栏  ›  技术社区  ›  Developer1205

如何修复AFNetworking 3.1.0中Domain=NSURLErrorDomain Code=-999错误?[复制]

  •  0
  • Developer1205  · 技术社区  · 6 年前

    我一直在尝试使用coronasdk的Facebook API来发布我在Facebook上开发的游戏的分数。但是,我有一个问题。在我第一次尝试发布到facebook时,我在登录和用户身份验证后收到以下错误:

    NSURLErrorDomain错误代码-999

    那么,它就不会在facebook上发布了。此错误的可能原因是什么?我如何解决它?我试着在网上搜索,但找不到有关它的信息。提前谢谢。

    0 回复  |  直到 9 年前
        1
  •  134
  •   hjpotter92    5 年前

    Mac Developer Library (iOS文档)

    URL加载系统错误代码

    具有域NSURLErrorDomain的对象。

    enum
    {
       NSURLErrorUnknown = -1,
       NSURLErrorCancelled = -999,
       NSURLErrorBadURL = -1000,
       NSURLErrorTimedOut = -1001,
    

    如你所见; -999 is caused by ErrorCancelled . 这意味着: 在前一个请求完成之前,会发出另一个请求。

        2
  •  11
  •   thanhbinh84    11 年前

    hjpotter92是绝对正确的,我只想为我的案件提供解决方案。希望对你也有用。我的情况是:

    为了解决这个问题,我在关闭对话框和按下新屏幕之间设置了一个延迟:

        [indicatorAlert dismissWithClickedButtonIndex:0 animated:YES];
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.01 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
                    [self performSegueWithIdentifier:@"HomeSegue" sender:nil];
                });
    

    奇怪的是,这个问题只发生在iOS 7上。

        3
  •  8
  •   Ramon    5 年前

    只是想在这里加上,当收到 -999 "cancelled"

    • 您再次执行完全相同的请求。
    • 你对你的 manager 对象被提前释放。(创建强引用)
        4
  •  4
  •   Pablo Blanco    5 年前

    我在Alamofire也遇到过同样的错误,这是因为证书固定。 证书不再有效,所以我不得不删除它并添加新证书。 希望有帮助。

        5
  •  1
  •   ilovecomputer    7 年前

    我没有使用coronasdk的Facebook API,但我在使用Alamofire时遇到了这个问题 secondRequest session 属性是 deinit 手动设置会话属性,这样编译器就不会在错误的位置取消设置它:

    class SessionManager {
        var session:SessionManager?
    
        init() {
            self.session = SessionManager(configuration:URLSessionConfiguration.ephemeral)
        }
        private func firstRequest() {
            guard let session = self.session else {return}
            session.request(request_url).responseData {response in
                if let data=response.data {
                    self.secondRequest()
                }
        }
        private func secondRequest() {
            guard let session = self.session else {return}
            session.request(request_url).responseData {response in
                if let data=response.data {
                    self.secondRequest()
                }
                //session will no longer be needed, deinit it
                self.session = nil
        }
    
        }
    
        6
  •  1
  •   Dan Lee    5 年前

    我们公司的应用程序在iOS中有很多-999错误。我到处找了一下,发现原因有两个,比如网络任务被解除锁定或者证书无效。但我已经检查了我们的代码,这两个是不可能的。我用的是阿拉莫菲

    我认为苹果的URLSession可能有一些缺陷。检查连接 New NSURLSession for every DataTask overkill? 一些细节的想法

        7
  •  1
  •   Christopher Graf    5 年前

    除了什么 Ramon 写到,当收到 NSURLErrorDomain -999 cancelled

    您在任务执行时通过调用 .cancel() .invalidateAndCancel() 在会话对象上。如果要使用委托创建自定义会话,则应调用 。无效取消() .finishTasksAndInvalidate() Apple Developer Documentation :

    如果您想知道这种日志行为,我在 Apple Developer forums

    作为解释,早在ios10中,我们引入了一种新的日志系统范围的日志架构(watch WWDC 2016 Session 721 Unified Logging and Activity Tracing 很多子系统,包括CFNetwork,都在向这个方向发展。在这个动作完全完成之前,你会遇到一些奇怪的边缘情况。

        8
  •  0
  •   Victor Thomas Wilcox Jr.    5 年前

    我在iOS版的Xamarin应用程序中遇到了这个错误。不确定根本原因,但在我的例子中,可以通过使用post方法来解决这个问题,而不是在请求体中传递服务器上下文的任何东西——这无论如何都更有意义。Android/Windows/该服务都处理GET with content,但在iOS应用程序中,部分响应将变为无响应,然后在日志中显示999个NSUrlErrorDomain内容。希望这能帮助其他人。我假设网络代码被困在一个循环中,但是看不到有问题的代码。

        9
  •  0
  •   Vyrnach    5 年前

    为了我的 科尔多瓦项目(或类似项目) 插件问题 . 确保没有丢失任何插件,并确保它们安装正确,没有问题。

    验证这一点最简单的方法就是从 重建科尔多瓦项目 cordova create <path> )以及所需的平台( cordova platform add <platform name> )并使用verbose标志(--verbose)添加每个插件,这样您就可以在为每个平台下载、添加到project和安装插件时查看控制台日志中是否有任何错误( cordova plugin add cordova-plugin-device --verbose

    扼要重述: cordova平台添加<平台名称>