Jos*_*een 1 http objective-c ios
我有崩溃报告是由于没有对dataTask完成块中的数据执行nil-check引起的.修复错误是微不足道的,但在什么情况下甚至会发生?在我的所有测试中,我总是收到一个0字节的NSData,而不是nil - 但显然它是在崩溃日志中发生的.我已经尝试禁用连接(通过飞行模式),反馈无效的HTTP响应,超时HTTP响应,在连接仍在传输时最小化应用程序等等...我做了我能想到的一切,但永远不会得到数据为零 - 只有0字节.我没想到什么?
NSURLSession *session = [NSURLSession sessionWithConfiguration:config];
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
    // What kind of server-response/connection-scenarios would make data be nil...? (not 0 bytes)
}];
[task resume];
我得到了答案,以及Josh Caswell的建议.
似乎只有iOS9,NSURLSession将为零; 以前的版本只包含零字节NSData.当http请求无法升级到https时,我得到了一个nil数据响应(请参阅上面的上下文评论),但是任何时候应用都无法建立连接 - 这包括与某些运营商打电话/电话,或服务差.这让我相信它不是特定于ATS的情况,而是涉及数据传输层的任何错误似乎都会导致数据为零.
因此,简而言之,重要的是要知道数据仅从iOS9开始为零.
| 归档时间: | 
 | 
| 查看次数: | 1079 次 | 
| 最近记录: |