Mercenario
Mercenario

Reputation: 45

URL request using Swift

I have access the "dictionary" moviedb for example : https://www.themoviedb.org/search/remote/multi?query=exterminador%20do%20futuro&language=en

How can i catch only the film's name and poster from this page to my project in Swift ?

Upvotes: 1

Views: 1105

Answers (2)

Septronic
Septronic

Reputation: 1176

You need to include your api key along with the request. I'd just try something like this to see if it works or not. If it does, then you can go about using the api key in a different way to make it more secure. I wouldn't bother as it's not an api with much sensitive functionality.

let query = "Terminator+second"
let url = NSURL(string: "http://api.themoviedb.org/3/search/keyword?api_key=YOURAPIKEY&query=\(query)&language=‌​en")!
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)

    //DO THIS
    print(String(data: data, encoding: NSUTF8StringEncoding))

    //OR THIS
    if let o = NSJSONSerialization.JSONObjectWithData(data, options: nil, error:nil) as? NSDictionary {
        println(dict)
    } else {
        println("Could not read JSON dictionary")
    }
} else {
    print(error)
}
}

task.resume()

The response you'll get will have the full list of properties. You need the poster_path and title (or original_title) property of the returned item.

Upvotes: 0

Ryosuke Hiramatsu
Ryosuke Hiramatsu

Reputation: 421

It's answer :)

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        reload()
    }

    private func reload() {
        let requestUrl = "https://www.themoviedb.org/search/remote/multi?query=exterminador%20do%20futuro&language=en"

        let config = NSURLSessionConfiguration.defaultSessionConfiguration()
        let session = NSURLSession(configuration: config)
        let request = NSURLRequest(URL: NSURL(string: requestUrl)!)

        let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in
            if let error = error {
                println("###### error ######")
            }
            else {
                if let JSON = NSJSONSerialization.JSONObjectWithData(data,
                    options: .AllowFragments,
                    error: nil) as? [NSDictionary] {

                        for movie in JSON {
                            let name = movie["name"] as! String
                            let posterPath = movie["poster_path"] as! String

                            println(name)        // "Terminator Genisys"
                            println(posterPath)  // "/5JU9ytZJyR3zmClGmVm9q4Geqbd.jpg"
                        }
                }
            }
        })

        task.resume()
    }
}

Upvotes: 1

Related Questions