[英]URLSession dataTask returns with no error and no data, causing SwiftyStoreKit.ReceiptError error 1
为什么以下代码会导致URLSession
对于data
和error
均返回nil
?
let task = URLSession.shared.dataTask(with: storeRequest as URLRequest) { data, _, error -> Void in
// there is an error
if let networkError = error {
print("There was a network error")
return
}
// there is no data
guard let safeData = data else {
print("No network error, but no data either")
return
}
...
运行此代码时,一个用户遇到No network error, but no data either
行No network error, but no data either
。
根据苹果在URLSession.dataTask
上的文档:
如果请求成功完成,则完成处理程序块的data参数包含资源数据,而error参数为nil。 如果请求失败,则data参数为nil,而error参数包含有关失败的信息。
我读为: data
或error
应始终为非零。 但这似乎并未在这里发生。 在什么情况下都为零?
(如果有帮助,则该URL为https://buy.itunes.apple.com/verifyReceipt上的iTunes收据验证API,受影响的用户为Apple的审阅者,通常不愿意协助调试。此代码实际上是SwiftyStoreKit的一部分,它会导致审阅者发生错误SwiftyStoreKit.ReceiptError error 1
但其他任何人都不会。)
这可能可能取决于HTTPURLResponse
您在完成处理程序忽略dataTask
( 文档为URLSession.dataTask
表明响应,而式URLResponse
,实际上是类型的HTTPURLResponse
-所以它有一个statusCode
,这将是财产有助于理解您的请求结果。
该请求很可能已经成功完成,但是没有返回任何数据(即204 No Content响应或300 Redirect响应)。 这些请求不会失败,因此不会有数据响应,但也不会有错误响应。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.