2014-08-27 4 views
0

J'ai une requête HTTP très simple qui retournera une donnée JSON. Voici mon code:dataTaskWithURL parfois pas de retour

 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() 

Parfois, le completionHandler n'est pas appelé du tout. Je suspecte que c'est le problème du serveur. Mais quand j'ai entré la même URL dans mon navigateur et essayé une douzaine de fois. Il n'y avait pas de problème du tout. Les données ont été renvoyées tout lorsque je rafraîchis le navigateur.

Y a-t-il quelque chose qui ne va pas dans mon code? Merci

+0

il semble ok pour moi, je dois dire - est-ce pour une application c'est en premier plan ou en arrière-plan? –

Répondre

0

Le code fonctionne bien pour moi. Je suggère que vous pouvez faire ce changement à votre code (une clause 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! 
     } 

Alors vous aurez une meilleure idée si quelque chose va mal

+0

Merci. C'est le problème de mes réseaux. Pardon. –

Questions connexes