我有一个非常简单的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并尝试了几十次。完全没有问题。当我刷新浏览器时,数据被返回。
我的代码有什么问题吗?感谢
答案 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!
}
如果出现任何问题,你会有更好的想法