2014-08-27 75 views
0

我有一個非常簡單的http請求,它將返回一個JSON數據。這裏是我的代碼:dataTaskWithURL有時沒有返回

 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根本沒有被調用。我懷疑這是服務器的問題。但是,當我輸入相同的網址到我的瀏覽器並嘗試了幾十次。根本沒有問題。當我刷新瀏覽器時,所有數據都會被返回。

我的代碼有什麼問題嗎?謝謝

+0

它看起來OK我,我一定要說有更好的想法 - 這是爲前景或背景中的應用程序? – 2014-08-27 09:06:04

回答

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! 
     } 

所以,你如果有什麼不順心

+0

謝謝。這是我的網絡問題。抱歉。 – 2014-08-29 12:22:13