dataTaskWithURL有时无法返回

时间:2014-08-27 09:01:14

标签: swift ios8 nsurlsession

我有一个非常简单的http请求,它将返回一个JSON数据。这是我的代码:

        let query = NSString(format: "http://glosbe.com/gapi/translate?from=eng&dest=eng&format=json&phrase=test",src, dest, phrase )
        let url = NSURL(string: query)

        let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) in
            if let httpRes = response as? NSHTTPURLResponse {
                println("status code=",httpRes.statusCode)
                if httpRes.statusCode == 200 {
                    println(NSString(data: data, encoding: NSUTF8StringEncoding))
                    // parse data
                    let phrase = Phrase.parse(data)
                    println(phrase.description)
                }
            }
        }

        task.resume()

有时完全没有调用completionHandler。我怀疑这是服务器的问题。但是当我在浏览器中输入相同的url并尝试了几十次。完全没有问题。当我刷新浏览器时,数据被返回。

我的代码有什么问题吗?感谢

1 个答案:

答案 0 :(得分:0)

代码对我来说很好用。我建议您可以对代码进行此更改(else子句):

        if let httpRes = response as? NSHTTPURLResponse {
            println("status code=",httpRes.statusCode)
            if httpRes.statusCode == 200 {
                println(NSString(data: data, encoding: NSUTF8StringEncoding))
                // parse data
                let phrase = Phrase.parse(data)
                println(phrase.description)
            }
        } else { 
            println("error \(error)") // print the error!
        }

如果出现任何问题,你会有更好的想法