2016-04-08 20 views
0

NSURLSession'u kullanarak bir HTTPRequest yapmamayı seviyorum. Ben talep doğru veriyi döndürür tam URL'sini girmek ama parametreleri kullanıldığında (NSJSONSerialization.dataWithJSONObject zaman ->HTTPBody bu hatayı alıyorumNSURLSession parametreleri tanınmadı

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

şey im yanlış burada ne var

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

Bu nedir? Ben bu soruyu sormadan önce önerilen yanıtı (hiçbiri işe yaramadı) baktım.

cevap

0

Bu sorunla ilgili sorununuzdeğiştirilerek çözülebilir. 10

request.HTTPMethod = "POST" için Sen post

Not için HTTPMethod değişmelidir gövdeli veri göndermek için, olsun isteği HTTP Vücut göndermek olmamalı: Bu API yöntemi POST isteklerini destekleyip desteklemediğini kontrol edin,

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: kontrol edebilirsiniz o yazı desteği yoksa ben sadece böyle olabilir discover/movie talebini bulmak 'get' doc göre sen, http gövde/yazı ile kullanamazsınız bundan daha fazla bilgi url: http://docs.themoviedb.apiary.io/#reference/discover/discovermovie/get

+0

İstek şimdi çalıştırıldı, ancak parametreler hala tanınmadı – Terrance

+0

@Terrance, cevabı notu ile birlikte gözden geçirdi, ayrıca bu URL'nin desteklenip desteklenmediğini kontrol et. – HardikDG

+0

Bu benim durumumda işe yarayacak ama gerçekten etkili değil. Bazı istekler birden çok parametre alır. Bu yanıtı http://stackoverflow.com/a/27724627/6091482 kullanarak bitirdim. Yardımınız için teşekkürler! – Terrance