2016-04-08 8 views
0

Im Versuch, eine HTTPRequest mit NSURLSession zu machen. Wenn ich die vollständige URL setzen die Anforderung die richtigen Daten zurückgibt, aber wenn Parameter (NSJSONSerialization.dataWithJSONObject ->HTTPBody bekomme ich diesen FehlerNSURLSession Parameter nicht erkannt

error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." 

ist es falsch hier etwas zu tun, im

let json = ["api_key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"] 
    do { 

     let jsonData = try NSJSONSerialization.dataWithJSONObject(json, options: .PrettyPrinted) 

     let url = NSURL(string: "https://api.themoviedb.org/3/discover/movie")! 
     let request = NSMutableURLRequest(URL: url) 
     request.HTTPBody = jsonData 
     request.HTTPMethod = "GET" 
     request.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type") 


     let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ data, response, error in 
      if error != nil{ 
       print("Error -> \(error)") 
       return 
      } 
      do { 
       let result = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? [String:AnyObject] 

       print("Result -> \(result)") 

      } catch { 
       print("Error -> \(error)") 
      } 
     } 

     task.resume() 


    } catch { 
     print(error) 
    } 
} 

Dies ist? Ich habe mir die vorgeschlagene Antwort angeschaut (keine funktionierte), bevor ich diese Frage stellte

Antwort

0

In Ihrem Fall kann dieses Problem gelöst werden, indem Sie dieändern 10 bis request.HTTPMethod = "POST"

Sie sollten nicht HTTP Körper in der GET-Anfrage senden, um die Daten mit dem Körper senden Sie Httpmethod zu post

Hinweis ändern sollen: Bitte überprüfen Sie, ob diese api Methode POST-Anfragen unterstützt, wenn es Post nicht unterstützen können Sie es nicht mit http Körper/Post verwenden, da pro doc nur ich finde ‚get‘ Antrag auf discover/movie, die wie das sein kann:

let url = NSURL(string: "http://api.themoviedb.org/3/discover/movie?api_key=YOUR_API_KEY")! 
let request = NSMutableURLRequest(URL: url) 
request.addValue("application/json", forHTTPHeaderField: "Accept") 

let session = NSURLSession.sharedSession() 
let task = session.dataTaskWithRequest(request) { data, response, error in 
    if let response = response, data = data { 
     print(response) 
     print(String(data: data, encoding: NSUTF8StringEncoding)) 
    } else { 
     print(error) 
    } 
} 

task.resume() 

Ref: Sie können prüfen, mehr Informationen dazu url: http://docs.themoviedb.apiary.io/#reference/discover/discovermovie/get

+0

Die Anfrage wird jetzt ausgeführt, aber die Parameter werden immer noch nicht erkannt – Terrance

+0

@Terrance aktualisiert die Antwort überprüfen Sie den Teil mit Hinweis, überprüfen Sie auch, ob diese URL Post unterstützt? – HardikDG

+0

Das wird funktionieren, aber nicht wirklich effektiv in meiner Situation. Einige Anfragen benötigen mehrere Parameter. Ich verwendete diese Antwort http://stackoverflow.com/a/27724627/6091482. Danke für Ihre Hilfe! – Terrance