2016-04-08 50 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

在你的情況下,可以通過更改request.HTTPMethod = "GET"request.HTTPMethod = "POST"

你不應該發送HTTP正文獲取請求,與你應該改變列舉HTTPMethod到post

注意身體發送數據:請檢查該API方法支持POST請求,如果它不支持後你不能與HTTP主體/後使用它,按照Doc我只能找「得到」爲​​請求可以是這樣的:

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

參考:您可以檢查從這個更多的信息url:http://docs.themoviedb.apiary.io/#reference/discover/discovermovie/get

+0

請求現在得到執行,但參數仍然不被識別 – Terrance

+0

@Terrance更新了答案檢查部分的註釋,同時檢查這個url是否支持post? – HardikDG

+0

這將工作,但在我的情況下並不真正有效。一些請求需要多個參數。我結束了使用這個答案http://stackoverflow.com/a/27724627/6091482。儘管感謝您的幫助! – Terrance