Romain Braun
Romain Braun

Reputation: 3684

session.dataTaskWithURL completionHandler never called

I have the following code :

let urlPath:String = apiURL + apiVersion + url + "?api_key=" + apiKey
let url = NSURL(string: urlPath)
let session = NSURLSession.sharedSession()
println(url!)
let task = session.dataTaskWithURL(url!, completionHandler: {(data, reponse, error) in
    println("Task completed")
    // rest of the function...
})

The completionHandler function is never called. I tried calling the URL in my browser, it works fine. I tried with another URL, it still doesn't work. I checked that my ios simulator could connect to the Internet, it does.

I don't know why the function is not called and since I don't have any error it's hard to debug.

Upvotes: 6

Views: 8455

Answers (1)

Mick MacCallum
Mick MacCallum

Reputation: 130193

The task never completes because it never gets started. You have to manually start the data task using its resume() method.

let urlPath = apiURL + apiVersion + url + "?api_key=" + apiKey
let url = NSURL(string: urlPath)!
let session = NSURLSession.sharedSession()

let task = session.dataTaskWithURL(url) { data, response, error in
    print("Task completed")
    // rest of the function...
}

task.resume()

Upvotes: 29

Related Questions