質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

3143閲覧

swit、php間のHTTP通信の方法について

km1300

総合スコア12

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2015/12/20 16:35

現在、swiftを用いてiOSとサーバ間でHTTP通信をしたいと思っているのですが、よくわからないので教えてください。
HTTP通信にはAlamofireを用いようと思っています。
クライアント側で
Alamofire.request(.POST, "http://(省略)", parameters:["bar":"bar"])
を実行し、
サーバ側ではPHPで出力し動作確認をしたいと思っているのですが、どう書けばいいのかよくわかりません。
宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ATSをinfo.plistを編集し、無効にしてHTTPSではなくHTTPで通信を行おうと思っていたのですがこれがいけなかったのでしょうか?

File.plistとATSに関して(18725)|teratail
設定に間違いがなければ、問題はそこではないでしょうね。

簡単なテストを書いてみました。

php

1<?php 2// エラー出力設定 3ini_set('display_errors', 1); 4ini_set('error_reporting', E_ALL); 5 6// POSTデータ取得 7$entityBody = file_get_contents('php://input'); 8 9// 変数を吐き出す 10//var_dump($entityBody); 11 12// POSTデータをそのままレスポンスとして戻す 13header('Content-type: application/json'); 14echo $entityBody; 15?>

PHPが分からん、ウェブサーバが分からんという質問は新規採番してください。

swift

1import UIKit 2import Alamofire 3 4class ViewController: UIViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 // Do any additional setup after loading the view, typically from a nib. 9 // managerを作成する 10 let manager = Alamofire.Manager.sharedInstance 11 12 // URLを設定する 13 let urlString = "https://xxx.com/post_test.php" 14 15 // JSONボディを作成する 16 let bodyParameters = [ 17 "bar": "bar" 18 ] 19 20 // エンコーディングを設定する 21 let encoding = Alamofire.ParameterEncoding.JSON 22 23 // HTTP Headersを追加する 24 manager.session.configuration.HTTPAdditionalHeaders = [ 25 "Content-Type":"application/json", 26 ] 27 28 // リクエストを作成し、通信を開始する 29 Alamofire.request(.POST, urlString, parameters: bodyParameters, encoding: encoding) 30 .validate(statusCode: 200..<300) 31 .responseJSON { json in 32 switch json.result { 33 // データを取り出す 34 case .Success(let value): 35 // print(json.request) 36 // print(json.response) 37 // print(json.data) 38 // print(json.result.value) 39 print(value) 40 // 失敗時エラー出力 41 case .Failure(let error): 42 print(error) 43 } 44 } 45 46 } 47 48 override func didReceiveMemoryWarning() { 49 super.didReceiveMemoryWarning() 50 // Dispose of any resources that can be recreated. 51 } 52 53} 54

以下の箇所はご自分の環境に置き換えてください。

swift

1// URLを設定する 2let urlString = "https://xxx.com/post_test.php"

以下のような出力があれば、成功です。

{ bar = bar; }

投稿2015/12/21 00:48

izkn

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

km1300

2015/12/21 13:41

ありがとうございます。 参考にさせていただきます。
guest

0

送信側が何を使おうと HTTP通信(POST) である事には違いないので、いつものやり方で良いはずですが、実際にやってみてダメでしたか?

[POSTでリクエストされたデータを取得する( $_POST )](http://www.php-ref.com/web/01_post.html)

投稿2015/12/20 23:52

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

km1300

2015/12/21 00:13

ダメでした。 ATSをinfo.plistを編集し、無効にしてHTTPSではなくHTTPで通信を行おうと思っていたのですがこれがいけなかったのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問