繁体   English   中英

NSURLSessionDataTask失败,错误代码为-999

[英]NSURLSessionDataTask failed with error code -999

我正在使用NSUrlSession调用后端API。 有时API工作正常,但有时却遇到类似问题

HTTP加载失败(错误代码:-999)HTTP加载失败(错误代码:-1200)

请参阅以下内容:-Xcode日志的屏幕截图。 在此处输入图片说明

我对此进行了研究,建议的可能解决方案是使用“ 应用程序传输安全设置”,而我已经在使用它。

这是我项目的info.plist文件中的屏幕截图。 在此处输入图片说明

下面是我正在使用的代码:-

NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request uploadProgress:^(NSProgress * _Nonnull uploadProgress) {
} downloadProgress:^(NSProgress * _Nonnull downloadProgress) {

} completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
    NSInteger statusCode = [httpResponse statusCode];
    completionBlock();
}];

[dataTask resume];

因此无法找出导致NSURLSessionDataTask失败的确切原因 甚至不调用完成块。

有什么建议么?

谢谢,

错误代码-999被取消请求,因为您使用NSURLSession包装器,可能看不到正确的消息。

无论如何,您都在实例化3个新对象:配置,管理器和数据任务。 它们中没有一个在另一个对象(例如, UIViewController )中具有强引用,因此,当您调用[dataTask resume] ,ARC已经删除了对象的引用,因为在同步代码的概念中,此代码已完成。

总而言之,这是正确的行为,要解决此问题,请尝试在您的类中创建AFURLSessionManagerstrong引用,一切都会好起来的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM