こんにちは、株式会社PlaygroundのiOSエンジニア伊原です。
今回は、タイトルの通りXcodeのシュミレーターでlocalhostを実行する方法を紹介していきます。
簡単スリーステップ
- サーバーの起動
- Alamofireのインストール
- リクエスト関数の呼び出し
サーバーの起動
これは使用しているサーバーによって異なるので
説明は割愛します。
Alamofireのインストール
podfileに
pod 'Alamofire'
を追加して、pod installを実行します。
リクエスト関数の呼び出し
さて、ここからが本題です。
最初に、関数の最終形態をお見せします。
func sendRequest(success: @escaping () -> Void) {
let dic: Parameters = [
"name1":"data1",
"name2":"data2"
]
Alamofire.request("http://localhost:8000/",
method: .post,
parameters: dic,
encoding: JSONEncoding.default)
.responseJSON { response in
switch response.result {
case .success(let value):
print("VALUE:",value)
success()
case .failure(let error):
print("RESPONSE ERROR:", error)
}
}
}
解説していきます。
まず、2~5行目で送信するデータを辞書型で定義しています。
6行目で、Alamofireのrequest関数を呼び出します。
引数に任意のURLを渡します。
7行目で、メソッドを指定します。今回は.postを指定していますが、GETの場合は.getとします。
8行目で、先ほど定義した辞書型の変数をパラメーターに渡します。
9行目で、辞書型のパラメーターが送信時にJsonに変換されるようにします。
10~16行目で、返ってきたレスポンスによって処理をしています。
成功した場合はエスケープさせ、
エラーが返ってきた場合はデバックエリアにエラーを表示させています。
最後に
iOS9以降では、http通信がデフォルトで許可されていません。
App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure.
Temporary exceptions can be configured via your app’s Info.plist file.
このようなエラーが出た方は、info.plistを編集してhttp通信を許可させる必要があります。

App Transport Security Settings を追加し、
その配下に Allow Arbitrary Loads を入れて値をYESに変更します。
これでhttpとの通信ができるようになります。
これはあくまでも応急的な処置なので、
安全性の高いhttpsに対応したAPIに切り替えることをお勧めします。
ABOUT ME

株式会社Playgroundのサービス
- 無料・簡単・片手でホームページを作成できる自社サービス Rakwi
- Web制作とアプリ開発を学べるオンラインプログラミング講座 Upstairs
- 開発,DX推進支援サービス スタートアッププラン