今回はRailsでapiを作成し、実機からそのapiをいくら叩いても
Could not connect to the server.
となってしまいハマってしまいましたん。
もちろんシミュレータでは全く問題なく通信ができます。
解決方法
① PCとiPhoneを同じWifiに繋ぐ
② rails s
ではなくrails s -b 0.0.0.0
でサーバを起動する
③ iOS側でapiを叩く時にlocalhost
ではなく PCのIPアドレス を使用する。
① PCとiPhoneを同じWifiに繋ぐ
PCとiPhoneを同じネット環境に置きましょう。
② rails s
ではなくrails s -b 0.0.0.0
でサーバを起する
rails s
では同じネット環境内のクライアントでもサーバにアクセスすることはできません。つまりPC外であるiPhoneはサーバにアクセスすることができないのです。
rails s -b 0.0.0.0
とすることで同じネット環境内でPC外のクライアントからサーバにアクセスすることができるようになります。
③ iOS側でapiを叩く時にlocalhost
ではなく PCのIPアドレス を使用する。
localhostというのは言わばPCの中でしか通用しません。そこにはIPアドレスというものが振られています。
以下PCのIPアドレスの取得方法です
ifconfig | grep 192
このコマンドを打つと
◯◯◯.◯◯◯.◯◯◯.◯◯◯ (◯には数字が入る) という12桁の数字が表示されるので
iOS側でapiを叩く際に
"http://◯◯◯.◯◯◯.◯◯◯.◯◯◯:3000/"
として使ってあげると良いです。
参考