SwiftでシンプルにHTTP-GETするサンプルコードは多数見かけるが、HTTP-POSTする例を見かけないので、HTTP-GET、JSONデータをHTTP-POSTするコードをシンプルに書いてみた。
環境
- Xcode 6.1
- iOS 8.1
ViewController.swift
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// HTTP-GET
@IBAction func getAsync(sender: AnyObject) {
// create the url-request
let urlString = "http://httpbin.org/get"
var request = NSMutableURLRequest(URL: NSURL(string: urlString)!)
// set the method(HTTP-GET)
request.HTTPMethod = "GET"
// use NSURLSessionDataTask
var task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: { data, response, error in
if (error == nil) {
var result = NSString(data: data, encoding: NSUTF8StringEncoding)!
println(result)
} else {
println(error)
}
})
task.resume()
}
// HTTP-POST
@IBAction func postAsync(sender: AnyObject) {
// create the url-request
let urlString = "http://httpbin.org/post"
var request = NSMutableURLRequest(URL: NSURL(string: urlString)!)
// set the method(HTTP-POST)
request.HTTPMethod = "POST"
// set the header(s)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
// set the request-body(JSON)
var params: [String: AnyObject] = [
"foo": "bar",
"baz": [
"a": 1,
"b": 20,
"c": 300
]
]
request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: nil)
// use NSURLSessionDataTask
var task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {data, response, error in
if (error == nil) {
var result = NSString(data: data, encoding: NSUTF8StringEncoding)!
println(result)
} else {
println(error)
}
})
task.resume()
}
}