iOSシミュレータでiOS8.1だとHTTP通信がエラーに
1・2年ぶりにiOSアプリの勉強を再開しています。が、早速ヤクの毛狩りに精を出してました。その結果をメモしていきます。
現象
iOSのバージョンによって、HTTP通信がエラーになったり通ったりする。 ログは以下。
2015-01-19 01:07:51.739 NetworkTest[11594:478081] error: Error Domain=NSURLErrorDomain Code=-1005 "The network connection was lost." UserInfo=0x7fdcb270bd70 {NSUnderlyingError=0x7fdcb266a910 "The network connection was lost.", NSErrorFailingURLStringKey=http://api.tiqav.com/search/random.json, NSErrorFailingURLKey=http://api.tiqav.com/search/random.json, _kCFStreamErrorDomainKey=1, _kCFStreamErrorCodeKey=57, NSLocalizedDescription=The network connection was lost.}
HTTP/HTTPS通信の可否とiOSのバージョンの対応。色々試した感じ、こうなった。iPhone6/plusはiOS8以降しか無いので、iPhone5sと同じだった。
- iPhone5s iOS7.1 -> http(localhost) OK!, http(not localhost) OK!, https(not localhost) OK!
- iPhone5s iOS8.1 -> http(localhost) OK!, http(not localhost) NG!, https(not localhost) OK!
2015/03/28 追記
- 以下のサイトのパッチ?をインストール
- Xcodeとシミュレータの再起動、シミュレータの設定リセット
これで解決!
Thanks for ... ios.steppers-hi.net
環境
検証ソース
(NSString)getHttpDataWithUrl:(NSString)url メソッドを見てください。
NetworkTest/ViewController.m at master · betahikaru/NetworkTest · GitHub
Qiita情報
明らかに以下と同じ現象だが、ウイルスバスター for Mac を一時的に切ってもうまくいかなかったりした。もう少し、(シミュレータ、Xcode、Macの再起動、シミュレータ内のAllow HTTPS なんとかオプションのきりかえを)試してみようと思う。
iOS SimulatorでiOS8を動作させるとHTTP通信ができない - Qiita
経緯
そもそもは、iOSで非同期通信をしてJSONを読む処理を、以下の記事を参考に実装したかった。
SwiftでWebAPIアプリを作った時の要点 - Qiita
たまたま既存のObjective-Cのアプリがあったので、そこに書くために必死こいてObjective-C化した。 そしたらエラーになったので、原因が分かるまで(厳密にはまだ特定できてないが)大変な時間がかかった。。。
まとめ
むずかしいっすよiOSアプリ。