2014-08-27 5 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() 

Иногда завершениеHandler вообще не вызывается. Я подозреваю, что это проблема сервера. Но когда я вводил один и тот же 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! 
     } 

Таким образом, вы будете иметь лучшее представление о том, если что-то пойдет не так

+0

Спасибо. Это проблема моих сетей. Сожалею. –