繁体   English   中英

URLSession dataTask返回无错误且无数据,导致SwiftyStoreKit.ReceiptError错误1

[英]URLSession dataTask returns with no error and no data, causing SwiftyStoreKit.ReceiptError error 1

为什么以下代码会导致URLSession对于dataerror均返回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 eitherNo network error, but no data either

根据苹果在URLSession.dataTask上的文档:

如果请求成功完成,则完成处理程序块的data参数包含资源数据,而error参数为nil。 如果请求失败,则data参数为nil,而error参数包含有关失败的信息。

我读为: dataerror应始终为非零。 但这似乎并未在这里发生。 在什么情况下都为零?

(如果有帮助,则该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.

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