2016-04-08 2 views
0

NSURLSessionを使用してHTTPRequestを作成しようとしています。私は完全なURLを設定すると、要求は、正しいデータを返しますが(NSJSONSerialization.dataWithJSONObjectパラメータを使用している場合 - >HTTPBodyを私はNSURLSessionパラメータが認識されない

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

このエラーを取得する何かイムここで間違っているの

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

これははありますか?重複していません!この質問をする前に、提案された回答(いずれも働いていません)を確認しました

答えて

0

を変更することで問題を解決できます10

request.HTTPMethod = "POST"にあなたがpost

にHTTPMETHODを変更する必要があり、本体にデータを送信するために、GETリクエストでHTTPボディを送信しないでください。このAPIメソッドはPOSTリクエストをサポートしているかどうかを確認してください、

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

参考:あなたがチェックすることができ、それがポストをサポートしていない場合、私はこれだけのようにすることができ​​の要求を見つける「取得」ドキュメントごとに、あなたは、HTTPボディ/ポストでそれを使用することはできませんこのより多くの情報url:http://docs.themoviedb.apiary.io/#reference/discover/discovermovie/get

+0

リクエストは今実行されますが、パラメータはまだ認識されません。 – Terrance

+0

@Terranceはこの部分をチェックして、このURLが投稿をサポートしているかどうかを確認します。 – HardikDG

+0

それは私の状況では効果的ではありませんが、効果があります。リクエストによっては複数のパラメータを使用するものがあります。私はこの回答を使用して終わったhttp://stackoverflow.com/a/27724627/6091482。あなたの助けをありがとう! – Terrance