Table of Contents
SwiftでPOSTメソッドを使ったHTTPリクエストを送信する方法です。
PHPでデータベースに接続する処理を書けば、Swiftからは直接接続することが難しいMySQLなどのデータベースへ書き込みを行うこともできます。
データをやり取りするサンプル
テキストフィールドの入力をPOSTで送信するサンプルプログラムです。
POSTを送信するSwiftのコード
データを送信するSwift側のコードです。
import UIKit
class ViewController : UIViewController, UITextFieldDelegate {
let statusBarHeight = UIApplication.shared.statusBarFrame.height
var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.lightGray
// テキストフィールド
textField = UITextField(frame: CGRect(x: 0, y: statusBarHeight, width: self.view.frame.width, height: 40))
textField.delegate = self
textField.placeholder = "name"
textField.backgroundColor = UIColor.white
textField.returnKeyType = .done //キーボードの「改行」を「完了」にする
textField.clearButtonMode = .always
self.view.addSubview(textField)
// 送信ボタン
let submitButton = UIButton(type: .system)
submitButton.setTitle("Submit", for: .normal)
submitButton.addTarget(self, action: #selector(self.submit), for: .touchUpInside)
submitButton.sizeToFit()
submitButton.center = self.view.center
self.view.addSubview(submitButton)
}
// POST送信
func submit() {
let postString = "name=\(textField.text!)"
var request = URLRequest(url: URL(string: "http://localhost/Experiments/Swift_MySQL/submit.php")!)
request.httpMethod = "POST"
request.httpBody = postString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request, completionHandler: {
(data, response, error) in
if error != nil {
print(error)
return
}
print("response: \(response!)")
let phpOutput = String(data: data!, encoding: .utf8)!
print("php output: \(phpOutput)")
})
task.resume()
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
textField.resignFirstResponder()
return true
}
}
テキストフィールドに入力した文字列が「name」というキーの値として送信されます。同時に送信後のレスポンスをログに表示しています。
データを受け取るPHPのコード
POSTで送信されたデータを表示する受信側のPHPコードです。送信されたデータを $_POST[‘name’] として受け取ります。
if (isset($_POST['name'])) {
$name = $_POST['name'];
echo "Successfully submitted: " . $name;
} else {
echo "Failed";
exit;
}
サンプル実行結果
サンプルプログラムを実行すると、テキストフィールドとボタンが配置された画面が表示されます。
「test」と入力して Submit を押すと、レスポンスとPHPの出力がログに表示されます。
「Successfully submitted: test」と送信が成功して入力したテキストが表示されていることが確認できます。



完全にSwift3.0で書いてあるのはまだまだ少ないからこういう記事は本当にありがたいなあ。
ブログのレイアウトも見やすくて非常にわかりやすい。更新楽しみにしてます。