from: http://stackoverflow.com/questions/24016142/how-to-make-an-http-request-in-swift
You can use NSURL
, NSURLRequest
and NSURLSession
or NSURLConnection
as you'd normally do in Objective-C. Note that for iOS 7.0 and later, NSURLSession
is preferred.
Using NSURLSession
Initialize an NSURL
object and an NSURLSessionDataTask
from NSURLSession
. Then run the task with resume()
.
var url = NSURL(string: "http://www.stackoverflow.com")
let task = NSURLSession.sharedSession().dataTaskWithURL(url) {(data, response, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
task.resume()
Using NSURLConnection
First, initialize an NSURL
and an NSURLRequest
:
var url = NSURL(string: "http://www.stackoverflow.com")
var request = NSURLRequest(URL: url)
Then, you can load the request asynchronously with:
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue()) {(response, data, error) in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
}
Or you can initialize an NSURLConnection
:
var connection = NSURLConnection(request: request, delegate:nil, startImmediately: true)
Just make sure to set your delegate to something other than nil
and check the delegate methods to work with the response and data received.
For more detail, check the documentation for the NSURLConnectionDataDelegate
protocol
Testing on an Xcode playground
If you want to try this code on a Xcode playground, add import XCPlayground
to your playground, as well as the following call:
XCPSetExecutionShouldContinueIndefinitely()
This will allow you to use asynchronous code in playgrounds.