您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页AFNetworking 设置超时时间及如何判断超时

AFNetworking 设置超时时间及如何判断超时

来源:二三四教育网

AFNetworking 设置超时时间及如何判断超时

最近项目在优化,在连接超时之后要给用户友好提示,这就要设置超时时间以及判断超时之后的操作了。稍微折腾了一下,和大家分享一下。

设置超时时间

项目用的是AFNetworking,那就要研究AFNetworking超时设置,我二话不说就从Github上把AFNetworking的源码下载下来,之前听别人说过AFNetworking的默认超时时间为60s,不过听说归听说,我还是去源码看了一下。打开工程一搜,果然有,如下图:


timeoutInterval.png

不过60s估计等到花都谢了,设置成5~10s比较合理,于是赶紧去设置超时时间:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
// 设置超时时间
[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];
manager.requestSerializer.timeoutInterval = 8.f;
[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];

模拟超时环境

ps:在MacBook和真机上模拟超时环境是可以的,不过在Mac mini上模拟不成功,提示为:

Error: Error Domain=NSURLErrorDomain Code=-1003 "未能找到使用指定主机名的服务器。" 

不知道是什么原因?

判断超时并做相关操作

设置完之后问题又来了,如果我想在超时之后做一些操作,怎么判断什么时候请求超时?我想起来了每次AFN请求失败我都有打印error,于是我就去看看打印信息,如下图:


error.png

显而易见,超时对应的 错误码为-1001 好家伙,果然找到你了!根据error.code,在请求失败出设置如下:


timeoutsetting.png

错误码

苹果提供相关错误码如下:

    enum
    {
       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,
       NSURLErrorInternationalRoamingOff = -1018,
       NSURLErrorCallIsActive = -1019,
       NSURLErrorDataNotAllowed = -1020,
       NSURLErrorRequestBodyStreamExhausted = -1021,
       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
    }

设置完以上代码后,就可以为用户设置一些友好的提示了~,

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务