-999 error ios_ios error - code: -1002 - CSDN
  • 针对load failed with error Error Domain=NSURLErrorDomain Code=-999 "已取消"错误的解决方案的解决方案: 允许不进行SSL证书验证, 来规避SSL证书过期导致的请求报错 及时将有效的证书部署于所使用的环境中 I 、...

    前言

    针对load failed with error Error Domain=NSURLErrorDomain Code=-999 "已取消"错误的解决方案的解决方案:

    • 允许不进行SSL证书验证, 来规避SSL证书过期导致的请求报错
    • 及时将有效的证书部署于所使用的环境中

    I 、原因分析

    SSL证书失效了, 导致此问题。

    • evaluateServerTrust:forDomain:
    /**
     Whether or not the specified server trust should be accepted, based on the security policy.
    
     This method should be used when responding to an authentication challenge from a server.
    
     @param serverTrust The X.509 certificate trust of the server.
     @param domain The domain of serverTrust. If `nil`, the domain will not be validated.
    
     @return Whether or not to trust the server.
     */
    - (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust
                      forDomain:(nullable NSString *)domain;
    
    

    在这里插入图片描述

    证书无效后, 上面方法返回NO, 从而执行

                    disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge;
    
    

    最终导致, 当前的请求被cancel。

    II、解决方案

    2.1 设置securityPolicy允许不进行SSL证书验证

    • 设置securityPolicy
    
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy defaultPolicy];
    securityPolicy.validatesDomainName = NO;
    securityPolicy.allowInvalidCertificates = YES;
    manager.securityPolicy = securityPolicy;
    

    III 、 see also

    3.1 iOS 终于找到不走全局proxy的方案【 例如:隧道APP请求我们自己接口的都不走隧道】

     
        //APP请求我们自己接口的都不走隧道
        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration ephemeralSessionConfiguration];
        configuration.connectionProxyDictionary = @{};
        
        
    //    2/ AFHTTPSessionManager 创建NSURLSessionDataTask
        AFHTTPSessionManager *mgr = [[AFHTTPSessionManager alloc]initWithSessionConfiguration:configuration];
        
    
    
    
    

    3.2 iOS SSL证书验证(针对AFNetwork), 让Charles再也无法抓你的请求数据;

    3.3 didReceiveChallenge

    - (void)URLSession:(NSURLSession *)session
    didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
     completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler
    {
        NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling;
        __block NSURLCredential *credential = nil;
    
        if (self.sessionDidReceiveAuthenticationChallenge) {
            disposition = self.sessionDidReceiveAuthenticationChallenge(session, challenge, &credential);
        } else {
            if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) {
                if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) {
                    credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
                    if (credential) {
                        disposition = NSURLSessionAuthChallengeUseCredential;
                    } else {
                        disposition = NSURLSessionAuthChallengePerformDefaultHandling;
                    }
                } else {
                    disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge;
                }
            } else {
                disposition = NSURLSessionAuthChallengePerformDefaultHandling;
            }
        }
    
        if (completionHandler) {
            completionHandler(disposition, credential);
        }
    }
    
    
    展开全文
  • iOS NSURLErrorDomain Code=-999 前言 今天有一个线上bug,是分配给提供H5的团队的,但是后台查不出来原因。于是让前端iOS帮忙查一查原因。 今天,交给我来帮忙查原因,但是问题在网络好的状态下并不必现,很...

    iOS  NSURLErrorDomain Code=-999

    前言

    今天有一个线上bug,是分配给提供H5的团队的,但是后台查不出来原因。于是让前端iOS帮忙查一查原因。

    今天,交给我来帮忙查原因,但是问题在网络好的状态下并不必现,很难去定位问题的根本原因。最后只能到测试旁边连接测试专用的慢网环境,然后才能必现。

    刚进入界面时是加载一个H5页面,当点击H5页面上的某个按钮的时候,会通过webview拦截到scheme,然后去走接口请求数据,得到数据后再加载H5页面。此时,走了webview加载失败的回调。

    加断点,打印出来的error信息是:

     
    Error Domain=NSURLErrorDomain Code=-999 “The operationcouldn’t becompleted.
     
    

    然后,笔者进入NSURLError.h中查看-999代表什么对应的key是什么:

     
    NS_ENUM(NSInteger)
    {
        NSURLErrorUnknown =            -1,
        NSURLErrorCancelled =          -999,
        NSURLErrorBadURL =              -1000,
        NSURLErrorTimedOut =            -1001,
        NSURLErrorUnsupportedURL =          -1002,
        NSURLErrorCannotFindHost =          -1003,
        NSURLErrorCannotConnectToHost =        -1004,
        NSURLErrorNetworkConnectionLost =      -1005,
        NSURLErrorDNSLookupFailed =        -1006,
        NSURLErrorHTTPTooManyRedirects =        -1007,
        NSURLErrorResourceUnavailable =        -1008,
        NSURLErrorNotConnectedToInternet =      -1009,
        NSURLErrorRedirectToNonExistentLocation =  -1010,
        NSURLErrorBadServerResponse =      -1011,
        NSURLErrorUserCancelledAuthentication =    -1012,
        NSURLErrorUserAuthenticationRequired =  -1013,
        NSURLErrorZeroByteResource =        -1014,
        NSURLErrorCannotDecodeRawData =            -1015,
        NSURLErrorCannotDecodeContentData =        -1016,
        NSURLErrorCannotParseResponse =            -1017,
        NSURLErrorAppTransportSecurityRequiresSecureConnection NS_ENUM_AVAILABLE(10_11, 9_0) = -1022,
        NSURLErrorFileDoesNotExist =        -1100,
        NSURLErrorFileIsDirectory =        -1101,
        NSURLErrorNoPermissionsToReadFile =    -1102,
        NSURLErrorDataLengthExceedsMaximum NS_ENUM_AVAILABLE(10_5, 2_0) =  -1103,
        
        // SSL errors
        NSURLErrorSecureConnectionFailed =      -1200,
        NSURLErrorServerCertificateHasBadDate =    -1201,
        NSURLErrorServerCertificateUntrusted =  -1202,
        NSURLErrorServerCertificateHasUnknownRoot = -1203,
        NSURLErrorServerCertificateNotYetValid =    -1204,
        NSURLErrorClientCertificateRejected =  -1205,
        NSURLErrorClientCertificateRequired =  -1206,
        NSURLErrorCannotLoadFromNetwork =      -2000,
        
        // Download and file I/O errors
        NSURLErrorCannotCreateFile =        -3000,
        NSURLErrorCannotOpenFile =          -3001,
        NSURLErrorCannotCloseFile =        -3002,
        NSURLErrorCannotWriteToFile =      -3003,
        NSURLErrorCannotRemoveFile =        -3004,
        NSURLErrorCannotMoveFile =          -3005,
        NSURLErrorDownloadDecodingFailedMidStream = -3006,
        NSURLErrorDownloadDecodingFailedToComplete =-3007,
     
        NSURLErrorInternationalRoamingOff NS_ENUM_AVAILABLE(10_7, 3_0) =        -1018,
        NSURLErrorCallIsActive NS_ENUM_AVAILABLE(10_7, 3_0) =                    -1019,
        NSURLErrorDataNotAllowed NS_ENUM_AVAILABLE(10_7, 3_0) =                  -1020,
        NSURLErrorRequestBodyStreamExhausted NS_ENUM_AVAILABLE(10_7, 3_0) =      -1021,
        
        NSURLErrorBackgroundSessionRequiresSharedContainer NS_ENUM_AVAILABLE(10_10, 8_0) = -995,
        NSURLErrorBackgroundSessionInUseByAnotherProcess NS_ENUM_AVAILABLE(10_10, 8_0) = -996,
        NSURLErrorBackgroundSessionWasDisconnected NS_ENUM_AVAILABLE(10_10, 8_0)= -997,
    };
     
    

    找到了吧!!!NSURLErrorCancelled就是-999,它代表请求被取消的意思。

    根本原因

    出现NSURLErrorDomain Code=-999的根本原因是什么呢?其实就是因为webview在之前的请求还没有加载完成,下一个请求发起了,此时webview会取消掉之前的请求,因此会回调到失败这里。

    因此,在处理Webview的加载失败的回调时,要注意拦截掉被取消的请求。

    解决方案

    在webview加载失败时,添加如下代码来判断:

     
    - (void)webView:(UIWebView *)webViewdidFailLoadWithError:(NSError *)error {
      [self stopAnimating];
      
      // 如果是被取消,什么也不干
      if([errorcode] == NSURLErrorCancelled)  {
        return;
      }
      
      // 后续失败处理
    }
     
    

    最后

    如果大家遇到同样的问题,请不要着急,这个bug不一定是后台的,也不一定是前端的,因此彼此应该要互相配合,共同找到问题的根本原因。

    由于安卓也有同样的问题,但是复现率没有iOS的高,在笔者找出根本原因后,H5人员与安卓端描述,希望安卓端也能统一改,但是描述不清楚,导致安卓这边有意见。于是叫笔者过来帮忙解释原因,讲了半天,安卓的leader说不可能~不会的~不应该~不影响~

    发现跟安卓沟通要是不懂一点安卓,真心容易被人忽悠。当然,最后还是要改的,事实都摆在面前了,还能有什么借口可以逃避!

    希望大家在遇到同样的问题时,淡定!沟通协作共同解决问题。

    展开全文
  • didFailLoadWithError中出现code = -999错误。 错误原因:一个页面没有被加载完成之前,收到下一个请求。 解决办法:在didFailLoadWithError方法中,做如下处理即可: if ([error code] == ...
    加载webView时在
    

    didFailLoadWithError中出现code = -999错误。

    错误原因:一个页面没有被加载完成之前,收到下一个请求。


    解决办法:在didFailLoadWithError方法中,做如下处理即可:

    if ([error code] == NSURLErrorCancelled) {

           return;

        }



    code枚举列表:

        NSURLErrorUnknown = -1,

        NSURLErrorCancelled = -999,

        NSURLErrorBadURL = -1000,

        NSURLErrorTimedOut = -1001,

        NSURLErrorUnsupportedURL = -1002,

        NSURLErrorCannotFindHost = -1003,

        NSURLErrorCannotConnectToHost = -1004,

        NSURLErrorDataLengthExceedsMaximum = -1103,

        NSURLErrorNetworkConnectionLost = -1005,

        NSURLErrorDNSLookupFailed = -1006,

        NSURLErrorHTTPTooManyRedirects = -1007,

        NSURLErrorResourceUnavailable = -1008,

        NSURLErrorNotConnectedToInternet = -1009,

        NSURLErrorRedirectToNonExistentLocation = -1010,

        NSURLErrorBadServerResponse = -1011,

        NSURLErrorUserCancelledAuthentication = -1012,

        NSURLErrorUserAuthenticationRequired = -1013,

        NSURLErrorZeroByteResource = -1014,

        NSURLErrorCannotDecodeRawData = -1015,

        NSURLErrorCannotDecodeContentData = -1016,

        NSURLErrorCannotParseResponse = -1017,

        NSURLErrorFileDoesNotExist = -1100,

        NSURLErrorFileIsDirectory = -1101,

        NSURLErrorNoPermissionsToReadFile = -1102,

        NSURLErrorSecureConnectionFailed = -1200,

        NSURLErrorServerCertificateHasBadDate = -1201,

        NSURLErrorServerCertificateUntrusted = -1202,

        NSURLErrorServerCertificateHasUnknownRoot = -1203,

        NSURLErrorServerCertificateNotYetValid = -1204,

        NSURLErrorClientCertificateRejected = -1205,

        NSURLErrorClientCertificateRequired = -1206,

        NSURLErrorCannotLoadFromNetwork = -2000,

        NSURLErrorCannotCreateFile = -3000,

        NSURLErrorCannotOpenFile = -3001,

        NSURLErrorCannotCloseFile = -3002,

        NSURLErrorCannotWriteToFile = -3003,

        NSURLErrorCannotRemoveFile = -3004,

        NSURLErrorCannotMoveFile = -3005,

        NSURLErrorDownloadDecodingFailedMidStream = -3006,

        NSURLErrorDownloadDecodingFailedToComplete = -3007


    参考来源:http://blog.csdn.net/yesjava/article/details/8056681

    展开全文
  • Printing description of error: Error Domain=NSURLErrorDomain Code=-999 "(null)" 出现错误的原因是因为webview在之前的请求还没有加载完成,下一个请求开始发起了,因此webview会取消掉之前的请求,便会回调到...

    Printing description of error: Error Domain=NSURLErrorDomain Code=-999 "(null)" 

    出现错误的原因是因为webview在之前的请求还没有加载完成,下一个请求开始发起了,因此webview会取消掉之前的请求,便会回调到didFailLoadWithError。

    - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
    {
        // 被取消  这种错误我们可以采用暂不处理的方式
        if([error code] == NSURLErrorCancelled)  {
            return;
        }
    }

    /*!
        @enum NSURL-related Error Codes
        @abstract Constants used by NSError to indicate errors in the NSURL domain
    */
    NS_ENUM(NSInteger)
    {
        NSURLErrorUnknown =             -1,
        NSURLErrorCancelled =             -999,
        NSURLErrorBadURL =                 -1000,
        NSURLErrorTimedOut =             -1001,
        NSURLErrorUnsupportedURL =             -1002,
        NSURLErrorCannotFindHost =             -1003,
        NSURLErrorCannotConnectToHost =         -1004,
        NSURLErrorNetworkConnectionLost =         -1005,
        NSURLErrorDNSLookupFailed =         -1006,
        NSURLErrorHTTPTooManyRedirects =         -1007,
        NSURLErrorResourceUnavailable =         -1008,
        NSURLErrorNotConnectedToInternet =         -1009,
        NSURLErrorRedirectToNonExistentLocation =     -1010,
        NSURLErrorBadServerResponse =         -1011,
        NSURLErrorUserCancelledAuthentication =     -1012,
        NSURLErrorUserAuthenticationRequired =     -1013,
        NSURLErrorZeroByteResource =         -1014,
        NSURLErrorCannotDecodeRawData =             -1015,
        NSURLErrorCannotDecodeContentData =         -1016,
        NSURLErrorCannotParseResponse =             -1017,
        NSURLErrorAppTransportSecurityRequiresSecureConnection NS_ENUM_AVAILABLE(10_11, 9_0) = -1022,
        NSURLErrorFileDoesNotExist =         -1100,
        NSURLErrorFileIsDirectory =         -1101,
        NSURLErrorNoPermissionsToReadFile =     -1102,
        NSURLErrorDataLengthExceedsMaximum NS_ENUM_AVAILABLE(10_5, 2_0) =    -1103,
        
        // SSL errors
        NSURLErrorSecureConnectionFailed =         -1200,
        NSURLErrorServerCertificateHasBadDate =     -1201,
        NSURLErrorServerCertificateUntrusted =     -1202,
        NSURLErrorServerCertificateHasUnknownRoot = -1203,
        NSURLErrorServerCertificateNotYetValid =     -1204,
        NSURLErrorClientCertificateRejected =     -1205,
        NSURLErrorClientCertificateRequired =    -1206,
        NSURLErrorCannotLoadFromNetwork =         -2000,
        
        // Download and file I/O errors
        NSURLErrorCannotCreateFile =         -3000,
        NSURLErrorCannotOpenFile =             -3001,
        NSURLErrorCannotCloseFile =         -3002,
        NSURLErrorCannotWriteToFile =         -3003,
        NSURLErrorCannotRemoveFile =         -3004,
        NSURLErrorCannotMoveFile =             -3005,
        NSURLErrorDownloadDecodingFailedMidStream = -3006,
        NSURLErrorDownloadDecodingFailedToComplete =-3007,

        NSURLErrorInternationalRoamingOff NS_ENUM_AVAILABLE(10_7, 3_0) =         -1018,
        NSURLErrorCallIsActive NS_ENUM_AVAILABLE(10_7, 3_0) =                    -1019,
        NSURLErrorDataNotAllowed NS_ENUM_AVAILABLE(10_7, 3_0) =                  -1020,
        NSURLErrorRequestBodyStreamExhausted NS_ENUM_AVAILABLE(10_7, 3_0) =      -1021,
        
        NSURLErrorBackgroundSessionRequiresSharedContainer NS_ENUM_AVAILABLE(10_10, 8_0) = -995,
        NSURLErrorBackgroundSessionInUseByAnotherProcess NS_ENUM_AVAILABLE(10_10, 8_0) = -996,
        NSURLErrorBackgroundSessionWasDisconnected NS_ENUM_AVAILABLE(10_10, 8_0)= -997,
    };

    --------------------- 
    作者:feiyue0823 
    来源:CSDN 
    原文:https://blog.csdn.net/feiyue0823/article/details/58604055 
    版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • 我们把http改成https后,出现如下: Error Domain=NSURLErrorDomain Code=-999 "已取消",请问如何解决?
  • 最近发现在加载有的URL时会发生-999的报错,原因主要是用户频繁操作,导致一个链接还未完全加载完成后就立马加载一个新的链接,系统的web包就会收回第一个未加载完成的,然后抛出NSURLErrorCancelled的错误 ...
  • Error Domain=NSURLErrorDomain Code=-999 “cancelled” UserInfo…….
  • 1、错误一:Error Domain=NSURLErrorDomain Code=-999 导致原因: 1、一个页面没有被完全加载之前收到下一个请求,此时迅速会出现此error,error=-999 2、此时可能已经加载完成,则忽略此error,继续进行加载。 2...
  • Printing description of error: Error Domain=NSURLErrorDomain Code=-999 "(null)"  出现错误的原因是因为webview在之前的请求还没有加载完成,下一个请求开始发起了,因此webview会取消掉之前的请求,便会回调到...
  • 尼玛这个问题解决了一天,找各种https的错误的资料,都不是 原因很简单,手机的时间不对,和标准时间相差太多,https验证失败 改了时间,一切ok
  • 这个问题困扰了我1天 一直以为是 需要修改AF的源码 按照 HttpDNS的文档,让后发现AF 里面已经自己做了 只需要在 NSString * cerPath = [[NSBundle mainBundle] pathForResource:@"current"...
  • iOSError Domain=com.alamofire.error.serialization.response Code=-1011 “网络不给力” Status Code: 404 原因分析 1.URL的参数不对(和后台的对应不上) 2.URL的路径不对(和后台沟通后发现后台接口文档...
  • [Error] Error: 执行命令 react-native run-ios --simulator --no-packager 时出错: 执行命令 react-native run-ios --simulator --no-packager 时出错 (error code 101) 解决办法: 找到文件: 你的rn项目/node_...
  • 这几天出东南亚版本,突然接到个ios继承谷歌登录 当时我就懵逼了,简直去拆ios的台有木有。那不管策划就是大大说什么我们就得做什么有木有。 ps. 以前是用什么 Google+ 登录 现在废弃了. 网址:...
  • 在程序执行中发现错误,请求...查看error信息 Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: internal server error (500)" UserInfo={com.alamofire.serialization.respo
  • 网络请求会异常,比如报错:Error domain: @"NSURLErrorDomain" - code: 1002 在回调的地方打一个断点,然后用命令行查看下什么错误: po error 当错误是:**[Error Domain=NSURLErrorDomain Code=-1002 ] ...
  • CordovaError: Promise rejected with non-error: 'ios-deploy was not found. Please download, build and install version 1.9.2 or greater from https://github.com/phonegap/ios-deploy into your pat...
  • JS 和 iOS 交互,加载 webView 时抛出异常, NSURLConnection finished with error - code -1100, 异常原因是由于没有找到文件。 我遇到的原因: 原因1:没有将要加载的文件(如图片等)添加到项目中 原因2:JS ...
  • 当后台服务器配置了https证书后,iOS端如果采用AF3.0请求网络,必须配置一下证书的支持。可按下面步骤做: 1、2、进到证书路径,执行下面语句 openssl x509 -in 你的证书.crt -out 你的证书.cer -outform der ...
  • iOS NSURLConnection finished with error - code -1022 今天新建了一个项目,然后请求一个http的接口,一直为nil,放在原来项目就可以请求,新的就不行.气死我了… 后来发现一个问题,出来NSURLConnection finished ...
1 2 3 4 5 ... 20
收藏数 130,149
精华内容 52,059
关键字:

-999 error ios