ios - dataTaskWithRequest 对于一个非常具体的字符串花费的时间太长

标签 ios iphone swift nsurlsession nsurlsessiondatatask

我正在使用 swift 创建一个 IOS 应用程序。 最近,我遇到了一个奇怪的错误。 我正在尝试检查 url 是否有效,因此,我正在使用 url 创建请求并检查响应。我使用 NSUrlSession 的 dataTaskWithRequest 来完成这个任务。 奇怪的错误是,如果 URL 是 alibaba ,响应会在很长时间后返回(有时超过 20 秒)。 为什么会这样? 就我而言,它只发生在这个特定的 url 上。 这是一些代码,虽然它不是必需的。

let request = NSMutableURLRequest(URL: validatedUrl)
        request.HTTPMethod = "HEAD"

        let session = NSURLSession.sharedSession()

        let task = session.dataTaskWithRequest(request){ data, response, error in
            // The response here returns after a very long time
            let url = request.URL!.absoluteString

我会很感激你们的帮助!

最佳答案

您正在通过 Internet 检索 URL 的内容。发生这种情况的速度是任意的。这取决于查找主机名的 DNS 服务器的速度、响应请求的 Web 服务器的速度、用户的 Internet 连接速度以及中间每个网络的速度。

您可以安全地假设它会在三分钟内成功或超时。在蜂窝网络中,二十秒甚至都算不上异常。

您可能应该重新考虑您正在使用此 URL 做什么以及为什么这样做,或者至少尝试找出一种方法来避免在您获取 URL 时让用户等待。

关于ios - dataTaskWithRequest 对于一个非常具体的字符串花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37307686/

相关文章:

ios - 以编程方式在导航 Controller 中设置初始 viewController (Layer SDK)

ios - 如何比较数组中的三个对象?

ios - ivars 和循环方法

iphone - 如何设置 UITableViewCell 高亮图片

iPhone SDK : subFolders inside the main bundle

swift - 如果用 "copy constructor"初始化,Data 的 `freeWhenDone:false` 是否复制其引用的字节?

swift - 为什么这会发生在 Swift 中?

php - Converting MySQL to SQLite for iOS Device 可以下载和使用吗?

ios - 使用 mapPin 按钮 Xcode 打开一个新 View

ios - 错误 : Argument passed to call that takes no arguments