美文网首页iosiOS 开发iOS Developer
【iOS 开发】AFNetworking 网络请求失败后通过 N

【iOS 开发】AFNetworking 网络请求失败后通过 N

作者: 爱吃鸭梨的猫 | 来源:发表于2017-06-06 17:34 被阅读1457次
    Error

    最近在修改一个网络请求的 bug 时,由于一直请求失败,所以在寻找具体失败原因的时候,了解了一下请求失败的错误返回 NSError ,发现原来可以通过 NSError 中的 code 属性来判断请求失败的具体原因,就在这里记录顺便分享一下。


    判断方法

    通过判断 NSError 中的 code 错误码属性,可以判断具体失败原因,下面以 NSURLErrorTimedOut 请求超时为例。

    /* 开始请求 */
    [manager POST:url parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSLog(@"网络请求成功!");
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
        NSLog(@"网络请求失败!");
        if (error.code == NSURLErrorTimedOut) {
            
            NSLog(@"网络请求超时!");
        }
    }];
    

    错误码

    这里给出苹果提供的所有网络请求的错误码,可以根据不同错误码来给出不同的错误提示以及给出相应的操作,想具体了解每个错误码对应什么意思可以自行查询一下官方文档。

    /*!
        @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,
        NSURLErrorFileOutsideSafeArea API_AVAILABLE(macosx(10.12.4), ios(10.3), watchos(3.2), tvos(10.2)) = -1104,
        
        // 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,
    };
    

    其实 NSError 还有很多别的错误码,这里只给出网络请求相关的,其他的以后遇到了再记录下来吧。

    将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。

    我的传送门: 博客简书微博GitHub

    相关文章

      网友评论

        本文标题:【iOS 开发】AFNetworking 网络请求失败后通过 N

        本文链接:https://www.haomeiwen.com/subject/rucnfxtx.html