对于非常特定的字符串,dataTaskWithRequest需要太长时间

时间:2016-05-18 18:39:37

标签: ios iphone swift nsurlsession nsurlsessiondatatask

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

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

我很感激帮助一些人!

1 个答案:

答案 0 :(得分:0)

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

您可以放心地假设它会在三分钟内成功或超时。在蜂窝网络上,20秒甚至不会异常。

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