1、错误码解释
NSURLErrorUnknown(1):未知错误。

NSURLErrorCancelled(999):请求被取消。
NSURLErrorBadURL(1000):请求的URL错误,无法启动请求。
NSURLErrorTimedOut(1001):请求超时。
NSURLErrorCannotFindHost(1003):URL的host名称无法解析,即DNS有问题。
NSURLErrorCannotConnectToHost(1004):连接host失败。
NSURLErrorNetworkConnectionLost(1005):连接过程中被中断。

NSURLErrorHTTPTooManyRedirects(1007):重定向次数超过限制。
NSURLErrorResourceUnavailable(1008):无法获取所请求的资源。
NSURLErrorNotConnectedToInternet(1009):断网状态。
NSURLErrorRedirectToNonExistentLocation(1010):重定向到一个不存在的位置。
NSURLErrorBadServerResponse(1011):服务器返回数据有误。
NSURLErrorUserCancelledAuthentication(1012):身份验证请求被用户取消。
NSURLErrorUserAuthenticationRequired(1013):访问资源需要身份验证。
NSURLErrorZeroByteResource(1014):服务器报告URL数据不为空,却未返回任何数据。
NSURLErrorCannotDecodeRawData(1015):响应数据无法解码为已知内容编码。
NSURLErrorCannotDecodeContentData(1016):请求数据存在未知内容编码。
NSURLErrorCannotParseResponse(1017):响应数据无法解析。
NSURLErrorAppTransportSecurityRequiresSecureConnection(1200):安全连接失败。
NSURLErrorServerCertificateHasBadDate(1201):服务器证书过期。
NSURLErrorServerCertificateUntrusted(1202):不受信任的根服务器签名证书。
NSURLErrorServerCertificateHasUnknownRoot(1203):服务器证书没有任何根服务器签名。
NSURLErrorServerCertificateNotYetValid(1204):服务器证书还未生效。
NSURLErrorClientCertificateRejected(1205):服务器证书被拒绝。
NSURLErrorClientCertificateRequired(1206):需要客户端证书来验证SSL连接。
NSURLErrorCannotLoadFromNetwork(2000):请求只能加载缓存中的数据,无法加载网络数据。
NSURLErrorDownloadDecodingFailedMidStream(3000):下载操作无法创建文件。
NSURLErrorDownloadDecodingFailedToComplete(3001):下载操作无法打开文件。
NSURLErrorFileDoesNotExist(1100):请求的文件路径上文件不存在。
NSURLErrorFileIsDirectory(1101):请求的文件只是一个目录,而非文件。
NSURLErrorNoPermissionsToReadFile(1102):缺少权限无法读取文件。
NSURLErrorDataLengthExceedsMaximum(1103):资源数据大小超过最大限制。
2、常见解决方案
停止后台自动更新
通过终端执行以下命令可以停止nsurlstoraged
和nsurlsessiond
进程的后台自动更新,从而减少带宽占用:
- launchctl unload /System/Library/LaunchDaemons/com.apple.nsurlstoraged.plist
- launchctl unload /System/Library/LaunchAgents/com.apple.nsurlsessiond.plist
- sudo launchctl unload /System/Library/LaunchDaemons/com.apple.nsurlsessiond.plist
- sudo launchctl unload /System/Library/LaunchDaemons/com.apple.nsurlstoraged.plist
解决 SSL 错误
如果遇到 SSL 错误,可以尝试在项目的info.plist
文件中添加App Transport Security Settings
并设置Allow Arbitrary Loads
为YES
,还可以在网络请求代理中添加绕过证书的方法:
```objectivec
(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler {
if([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]){
NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust];
completionHandler(NSURLSessionAuthChallengeUseCredential,credential);
}
}
3、FAQ相关问题解答如何完全停止进程? 要完全停止
- nsurlstoraged
进程,可以通过以下命令卸载相应的启动项:
- nsurlstoraged
launchctl unload w /System/Library/LaunchDaemons/com.apple.nsurlstoraged.plist
如何排查具体的 URL 错误?
使用- NSError
对象获取详细的错误信息,例如错误码、本地化描述和恢复建议等,可以通过以下代码获取详细信息:
```objectivec
NSError *error = ...; // 获取到的错误对象
NSLog(@"错误码: %ld", (long)error.code);
NSLog(@"本地化描述: %@", error.localizedDescription);
NSLog(@"恢复建议: %@", error.localizedFailureReason);
通过以上步骤可以有效诊断和解决nsurlstoraged
报错问题,根据具体的错误码采取相应的措施,如停止不必要的后台进程或调整 SSL 设置,有助于提高系统的稳定性和性能。