Submit Search
Upload
iOSハンズオントレーニング通信(NSURLConnection/NSURLSession)編
•
5 likes
•
5,958 views
聡 大久保
Follow
NSURLConnection/NSURLSessionを利用して、Webからデータを取得するプログラムを学びます。
Read less
Read more
Technology
Business
Report
Share
Report
Share
1 of 21
Download now
Download to read offline
Recommended
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStack
Masataka Tsukamoto
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
Hideki Saito
おしべめしべ
おしべめしべ
puriketu99 --
Ansible quickstart
Ansible quickstart
Hideki Saito
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
Hideki Saito
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
Takeshi Kuramochi
初めての REST - Representational State Transfer
初めての REST - Representational State Transfer
Tatsumi Naganuma
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
Hideki Saito
Recommended
Ansibleで味わうHelion OpenStack
Ansibleで味わうHelion OpenStack
Masataka Tsukamoto
OpenStack & Ansible で実現する自動化
OpenStack & Ansible で実現する自動化
Hideki Saito
おしべめしべ
おしべめしべ
puriketu99 --
Ansible quickstart
Ansible quickstart
Hideki Saito
OpenStack Osloを使おう - cliff編
OpenStack Osloを使おう - cliff編
Hideki Saito
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
インフラ自動構築エンジン "Ansible"の勘所を1日でつかむ ~基礎入門編~
Takeshi Kuramochi
初めての REST - Representational State Transfer
初めての REST - Representational State Transfer
Tatsumi Naganuma
Ansible2とOpenStackの関係
Ansible2とOpenStackの関係
Hideki Saito
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
真治 米田
shinken monitoringについて真剣に調べてみた結果
shinken monitoringについて真剣に調べてみた結果
Tsuyoshi Torii
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
Kinuko Yasuda
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
akira6592
20061122
20061122
小野 修司
Ansible handson ood2016
Ansible handson ood2016
Hideki Saito
elasticsearchプラグイン入門
elasticsearchプラグイン入門
Shinsuke Sugaya
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Yasutaka Hamada
Mysql+Mroongaで全文検索
Mysql+Mroongaで全文検索
yoyamasaki
MailFluteでメール送信を楽しもう!
MailFluteでメール送信を楽しもう!
p1us2er0
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
オンプレを少しずつコンテナ化する
オンプレを少しずつコンテナ化する
Kenkichi Okazaki
Mroongaを選んだ理由と ちょっと嬉しかった話
Mroongaを選んだ理由と ちょっと嬉しかった話
Terui Masashi
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
Takeshi Kuramochi
Zabbixを2分でインストール
Zabbixを2分でインストール
真乙 九龍
Spring bootでweb 基本編
Spring bootでweb 基本編
なべ
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
Masanori Ishigami
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Mori Tetsuya
Getting started with Handoff
Getting started with Handoff
Yuichi Yoshida
Weeyble async 181009_tukky
Weeyble async 181009_tukky
shotaueda3
iOS WebView App
iOS WebView App
hagino 3000
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
More Related Content
What's hot
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
真治 米田
shinken monitoringについて真剣に調べてみた結果
shinken monitoringについて真剣に調べてみた結果
Tsuyoshi Torii
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
Kinuko Yasuda
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
akira6592
20061122
20061122
小野 修司
Ansible handson ood2016
Ansible handson ood2016
Hideki Saito
elasticsearchプラグイン入門
elasticsearchプラグイン入門
Shinsuke Sugaya
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Yasutaka Hamada
Mysql+Mroongaで全文検索
Mysql+Mroongaで全文検索
yoyamasaki
MailFluteでメール送信を楽しもう!
MailFluteでメール送信を楽しもう!
p1us2er0
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
オンプレを少しずつコンテナ化する
オンプレを少しずつコンテナ化する
Kenkichi Okazaki
Mroongaを選んだ理由と ちょっと嬉しかった話
Mroongaを選んだ理由と ちょっと嬉しかった話
Terui Masashi
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
Takeshi Kuramochi
Zabbixを2分でインストール
Zabbixを2分でインストール
真乙 九龍
Spring bootでweb 基本編
Spring bootでweb 基本編
なべ
What's hot
(16)
運用の現場での監視運用ツールの活用
運用の現場での監視運用ツールの活用
shinken monitoringについて真剣に調べてみた結果
shinken monitoringについて真剣に調べてみた結果
Service worker が拓く mobile web の新しいかたち
Service worker が拓く mobile web の新しいかたち
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
20061122
20061122
Ansible handson ood2016
Ansible handson ood2016
elasticsearchプラグイン入門
elasticsearchプラグイン入門
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
2014/11/08 第3回 一撃サーバー構築シェルスクリプト勉強会(懇親会もあるよ!) 発表資料
Mysql+Mroongaで全文検索
Mysql+Mroongaで全文検索
MailFluteでメール送信を楽しもう!
MailFluteでメール送信を楽しもう!
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
オンプレを少しずつコンテナ化する
オンプレを少しずつコンテナ化する
Mroongaを選んだ理由と ちょっと嬉しかった話
Mroongaを選んだ理由と ちょっと嬉しかった話
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
OpenStack を NetApp Unified Driver と NFS Copy Offload を使って拡張する Vol.002
Zabbixを2分でインストール
Zabbixを2分でインストール
Spring bootでweb 基本編
Spring bootでweb 基本編
Similar to iOSハンズオントレーニング通信(NSURLConnection/NSURLSession)編
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
Masanori Ishigami
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Mori Tetsuya
Getting started with Handoff
Getting started with Handoff
Yuichi Yoshida
Weeyble async 181009_tukky
Weeyble async 181009_tukky
shotaueda3
iOS WebView App
iOS WebView App
hagino 3000
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
5分でわかったつもりになるParse.com
5分でわかったつもりになるParse.com
Kenta Tsuji
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
Yoichiro Sakurai
Using SockJS(Websocket) with Sencha Ext JS
Using SockJS(Websocket) with Sencha Ext JS
Kazuhiro Kotsutsumi
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
Yuji Takayama
CleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unity
NakanoYosuke1
Swift + JSON via WordPress
Swift + JSON via WordPress
Masahiro Nakashima
Web socketドロンくん その後-
Web socketドロンくん その後-
Yuuichi Akagawa
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
Shigeo Ueda
Spring Integration 超入門
Spring Integration 超入門
Yasutaka Sugamura
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
Kazuki Nakajima
プロキシーを使ってテストを楽にする
プロキシーを使ってテストを楽にする
Shunji Konishi
Ios corebluetooth beginner
Ios corebluetooth beginner
shinsuke79
Wolcome to swift
Wolcome to swift
Kyohei Ito
20120425
20120425
小野 修司
Similar to iOSハンズオントレーニング通信(NSURLConnection/NSURLSession)編
(20)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Unity に於ける iOS ビルド自動化のおはなし - 20141030 第26回 Unity 勉強会
Getting started with Handoff
Getting started with Handoff
Weeyble async 181009_tukky
Weeyble async 181009_tukky
iOS WebView App
iOS WebView App
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
5分でわかったつもりになるParse.com
5分でわかったつもりになるParse.com
TestFlight自動化でらくらくチームテスト
TestFlight自動化でらくらくチームテスト
Using SockJS(Websocket) with Sencha Ext JS
Using SockJS(Websocket) with Sencha Ext JS
初めての Data API CMS どうでしょう - 仙台編 -
初めての Data API CMS どうでしょう - 仙台編 -
CleanArchitecture with AssemblyDefinition in unity
CleanArchitecture with AssemblyDefinition in unity
Swift + JSON via WordPress
Swift + JSON via WordPress
Web socketドロンくん その後-
Web socketドロンくん その後-
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
SlackのIncomingWebhooksとOutgoingWebhooksを使って電子工作と連携させてみよう
Spring Integration 超入門
Spring Integration 超入門
勉強会force#3 iOSアプリ開発
勉強会force#3 iOSアプリ開発
プロキシーを使ってテストを楽にする
プロキシーを使ってテストを楽にする
Ios corebluetooth beginner
Ios corebluetooth beginner
Wolcome to swift
Wolcome to swift
20120425
20120425
More from 聡 大久保
Oculus Interaction SDK で物をつかむ編
Oculus Interaction SDK で物をつかむ編
聡 大久保
Oculus Interaction SDK でグラブまわりの設定方法
Oculus Interaction SDK でグラブまわりの設定方法
聡 大久保
空間を認識する - 取り込みから表示まで -
空間を認識する - 取り込みから表示まで -
聡 大久保
Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩
聡 大久保
Hololens2 MRTK2.7(OpenXR) でのビルド環境構築(環境設定からビルドまで)
Hololens2 MRTK2.7(OpenXR) でのビルド環境構築(環境設定からビルドまで)
聡 大久保
Hololens2でアカウント情報の取得
Hololens2でアカウント情報の取得
聡 大久保
HoloLens2とPCで、WebRTCで映像をやりとり
HoloLens2とPCで、WebRTCで映像をやりとり
聡 大久保
UnityでVRアプリ(Android Cardboard)を作る -準備編-
UnityでVRアプリ(Android Cardboard)を作る -準備編-
聡 大久保
VRでのUI設計のヒント
VRでのUI設計のヒント
聡 大久保
ハードサーフェイスモデリング勉強会(Blender2.79b編)
ハードサーフェイスモデリング勉強会(Blender2.79b編)
聡 大久保
Google Tangoで現実世界を感じてみよう
Google Tangoで現実世界を感じてみよう
聡 大久保
仮想マシンを仮想空間で見る Cloud roadshow
仮想マシンを仮想空間で見る Cloud roadshow
聡 大久保
AWSのEC2の複数インスタンスからファイルを共有する方法
AWSのEC2の複数インスタンスからファイルを共有する方法
聡 大久保
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
聡 大久保
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
聡 大久保
Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更
Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更
聡 大久保
Awsで構築したのだよ 03 ec2インスタンスに設定したタグをサーバから取得
Awsで構築したのだよ 03 ec2インスタンスに設定したタグをサーバから取得
聡 大久保
Awsで構築したのだよ 02 ec2インスタンスから自分のインスタンスidを取得
Awsで構築したのだよ 02 ec2インスタンスから自分のインスタンスidを取得
聡 大久保
Awsで構築したのだよ 01 ユーザのコンソール操作をログに残す
Awsで構築したのだよ 01 ユーザのコンソール操作をログに残す
聡 大久保
awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)
聡 大久保
More from 聡 大久保
(20)
Oculus Interaction SDK で物をつかむ編
Oculus Interaction SDK で物をつかむ編
Oculus Interaction SDK でグラブまわりの設定方法
Oculus Interaction SDK でグラブまわりの設定方法
空間を認識する - 取り込みから表示まで -
空間を認識する - 取り込みから表示まで -
Photon Fusionのはじめの一歩
Photon Fusionのはじめの一歩
Hololens2 MRTK2.7(OpenXR) でのビルド環境構築(環境設定からビルドまで)
Hololens2 MRTK2.7(OpenXR) でのビルド環境構築(環境設定からビルドまで)
Hololens2でアカウント情報の取得
Hololens2でアカウント情報の取得
HoloLens2とPCで、WebRTCで映像をやりとり
HoloLens2とPCで、WebRTCで映像をやりとり
UnityでVRアプリ(Android Cardboard)を作る -準備編-
UnityでVRアプリ(Android Cardboard)を作る -準備編-
VRでのUI設計のヒント
VRでのUI設計のヒント
ハードサーフェイスモデリング勉強会(Blender2.79b編)
ハードサーフェイスモデリング勉強会(Blender2.79b編)
Google Tangoで現実世界を感じてみよう
Google Tangoで現実世界を感じてみよう
仮想マシンを仮想空間で見る Cloud roadshow
仮想マシンを仮想空間で見る Cloud roadshow
AWSのEC2の複数インスタンスからファイルを共有する方法
AWSのEC2の複数インスタンスからファイルを共有する方法
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
Awsで構築したのだよ 06 ec2インスタンス起動時にCloudWatchのアラームを追加する
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 05 プロセス監視、メモリ使用率、ディスク使用率をCloudWatchのカスタムメトリクスに追加したい
Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更
Awsで構築したのだよ 04 ec2インスタンス起動時にホスト名を変更
Awsで構築したのだよ 03 ec2インスタンスに設定したタグをサーバから取得
Awsで構築したのだよ 03 ec2インスタンスに設定したタグをサーバから取得
Awsで構築したのだよ 02 ec2インスタンスから自分のインスタンスidを取得
Awsで構築したのだよ 02 ec2インスタンスから自分のインスタンスidを取得
Awsで構築したのだよ 01 ユーザのコンソール操作をログに残す
Awsで構築したのだよ 01 ユーザのコンソール操作をログに残す
awsを学ぶ上で必要となる前提知識(DB)
awsを学ぶ上で必要となる前提知識(DB)
Recently uploaded
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Recently uploaded
(10)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
iOSハンズオントレーニング通信(NSURLConnection/NSURLSession)編
1.
iOSハンズオントレーニング 通信(NSURLConnection/NSURLSession)編 大久保 聡
2.
目次 NSURLConnection(同期) NSURLConnection(非同期) NSURLSession ※ベースとなるプロジェクトをダウンロードしてください。 https:/ /github.com/ovjang/NoUseStoryBoard
3.
WebのAPIを叩いてみる Facebook、twitterなどで、サーバとのやりとりにWeb APIのI/F が提供されています。APIでやりとりを行い、結果をiOSアプリ で表示することができたら・・・・ 本ハンズオンでは、認証が無くユーザ登録だけで使える、ぐるな びWebサービスを使ってiOSからリクエストを投げて、レスポン スを受け取るところまでを、ハンズオンで実施します。 ユーザ登録が必要になります。手順は、ぐるなびWebサービスの ホームページをご覧ください。http:/ /api.gnavi.co.jp/api/use.html
4.
NSURLConnection(同期) リクエスト(NSURLRequest)を作成 NSURLConnectionでリクエストを発行する。 結果が返るまで、処理がブロックされます。 結果(NSURLResponse)を、受け取る。
5.
NSURLRequestの作成 レストラン検索APIで、freewordに”ワニ”、エリア を大阪(AREA120)で検索するためのリクエストを作 成します。 http:/ /api.gnavi.co.jp/ver1/RestSearchAPI/?keyid=0520eb3010561b785d34a9af18e126a2&freeword=%E3%83%AF%E3%83%8B &area=AREA120 - (void)viewDidLoad { [super viewDidLoad]; //
Do any additional setup after loading the view. ! // 送信したいURLを作成する NSString *urlString =@"http://api.gnavi.co.jp/ver1/RestSearchAPI/?keyid=0520eb3010561b785d34a9af18e126a2&freeWord=ワニ&area=AREA120"; urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:urlString]; // Mutableなインスタンスを作成し、インスタンスの内容を変更できるようにする NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // MethodにGETを指定する。 request.HTTPMethod = @"GET"; }
6.
NSURLConnectionでリクエストを発行する。 NSURLConnectionで、先ほど作成したリクエストを 発行します。sendSynchronousRequestメソッドを使 うことで同期処理となり、レスポンスが返却され終 わるまで、処理がブロックされます。 - (void)viewDidLoad { [super viewDidLoad]; //
Do any additional setup after loading the view. ! // 送信したいURLを作成する NSString *urlString =@"http://api.gnavi.co.jp/ver1/RestSearchAPI/?keyid=0520eb3010561b785d34a9af18e126a2&freeWord=ワニ&area=AREA120"; urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:urlString]; // Mutableなインスタンスを作成し、インスタンスの内容を変更できるようにする NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // MethodにGETを指定する。 request.HTTPMethod = @"GET"; NSHTTPURLResponse *httpResponse; NSError *err; /* HTTP リクエスト送信 */ NSData *contents = [NSURLConnection sendSynchronousRequest:request returningResponse:&httpResponse error:&err]; NSString *responseBody = [[NSString alloc] initWithData:contents encoding:NSUTF8StringEncoding]; NSLog(@"Response = %@", responseBody); }
7.
動かしてみる
8.
NSURLConnection(非同期) リクエスト(NSURLRequest)を作成 NSURLConnectionでリクエストを発行する。 結果をDelegateで、受け取る。
9.
NSURLRequestの作成 同期処理と同じです。 - (void)viewDidLoad { [super viewDidLoad]; //
Do any additional setup after loading the view. !! // 送信したいURLを作成する NSString *urlString =@"http://api.gnavi.co.jp/ver1/RestSearchAPI/?keyid=0520eb3010561b785d34a9af18e126a2&freeword=ワニ&area=AREA120"; urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:urlString]; ! // Mutableなインスタンスを作成し、インスタンスの内容を変更できるようにする NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // MethodにGETを指定する。 ! request.HTTPMethod = @"GET"; } レスポンス受け取り用に、NSURLConnectionDelegateプロ トコルを継承しておきます。 // // // // Screen1ViewController.h NoUseStoryBoard ! #import <UIKit/UIKit.h> ! @interface Screen1ViewController : UIViewController <NSURLConnectionDelegate> ! @end
10.
NSURLConnectionでリクエストを発行する。 NSURLConnectionで、先ほど作成したリクエストを発行し ます。initWithRequestメソッドを使うことで非同期処理 となり、レスポンスが随時返却されます。 delegateで返されるレスポンスの処理を行います。 - didReceiveDataでレスポンス返却の都度、受け取ったレ スポンスを保管します。 - 全部のレスポンスが返されたら、 connectionDidFinishLoadingが呼ばれます。
11.
レスポンス受け取り用に、 NSURLConnectionDelegateプロトコルを継承してお きます。 データ受け取り用のメンバ変数を用意します。 // // // // Screen1ViewController.h NoUseStoryBoard ! #import <UIKit/UIKit.h> ! @interface Screen1ViewController
: UIViewController <NSURLConnectionDelegate> { @private NSMutableData *mutableData; } ! @end
12.
レスポンス受け取り用のメンバ変数の初期化。 NSURLConnectionのinitWithRequestメソッドで、リクエ ストを発行します。 - (void)viewDidLoad { [super viewDidLoad]; //
Do any additional setup after loading the view. ! // 受信データ用 mutableData = [NSMutableData new]; // 送信したいURLを作成する NSString *urlString =@"http://api.gnavi.co.jp/ver1/RestSearchAPI/?keyid=0520eb3010561b785d34a9af18e126a2&freeword=ワニ&area=AREA120"; urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; NSURL *url = [NSURL URLWithString:urlString]; // Mutableなインスタンスを作成し、インスタンスの内容を変更できるようにする NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; // MethodにGETを指定する。 request.HTTPMethod = @"GET"; /* HTTP リクエスト送信 */ NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; if (!connection) NSLog(@"failed to create connection"); } ! // データ受信時 - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{ [mutableData appendData:data]; } ! // 完了時 - (void)connectionDidFinishLoading:(NSURLConnection *)connection { NSString *str= [[NSString alloc] initWithData:mutableData encoding:NSUTF8StringEncoding]; NSLog(@"%@",str); }
13.
動かしてみる
14.
NSURLSession HTTPを介してコンテンツをダウンロードするAPI iOS7以上で利用可能 設定を一箇所にまとめて記述可能 バックグラウンド(アプリが後ろに回っても)で アップロード、ダウンロード可能
15.
基本 NSURLSessionConfiguration 接続の設定 (Cookie、Cache、HTTPヘッダー、認証、PROXYなど接続に関係する設定をまとめて設定できる。) ↓ NSURLSession 接続の管理(通信処理のキュー) ↓ NSURLSessionTask リクエスト + NSURLSessionDelegate リクエストの結果を処理
16.
NSURLSession作成 // // // // Screen1ViewController.h NoUseStoryBoard ! #import <UIKit/UIKit.h> ! @interface Screen1ViewController
: UIViewController <NSURLSessionTaskDelegate> ! @end - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // defaultSessionConfiguration or backgroundSessionConfiguration NSURLSessionConfiguration *configration = [NSURLSessionConfiguration defaultSessionConfiguration]; // NSURLSessionConfigurationを指定して NSURLSession作成 NSURLSession *session = [NSURLSession sessionWithConfiguration:configration delegate:self delegateQueue:nil]; }
17.
NSURLSessionTaskとDelegate タスク NSURLSessionTask 説明 基底クラス バックグラウンド 対応Delegate - NSDataオブジェクトを使用してデータを送受信 します。データタスクは、多 くの場合はインタ ラクティブな、アプリケーションからサーバへの NSURLSessionDataTask 短いリクエストを対象として います。データタ スクは、データの各部分が受信された後に一度に × NSURLSessionTaskDelegate 一部分ずつ、または完了ハンドラによって一括し て、アプリケーションにデータを返すことができ ます。 NSURLSessionUploadTask NSURLSessionDownloadTask ダウンロードタスク
は、ファイルの形でデータ を受信する。 アップロードタスクは は、(通常はファイルの形 で)データを送信する。 ○ ○ NSURLSessionTaskDelegate NSURLSessionDownloadTaskD elegate
18.
NSURLSessionDataTask作成 - (void)viewDidLoad { [super viewDidLoad]; //
Do any additional setup after loading the view. // defaultSessionConfiguration or backgroundSessionConfiguration NSURLSessionConfiguration *configration = [NSURLSessionConfiguration defaultSessionConfiguration]; // NSURLSessionConfigurationを指定して NSURLSession作成 NSURLSession *session = [NSURLSession sessionWithConfiguration:configration delegate:self delegateQueue:nil]; // リクエスト作成 NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]; // 先に作成したNSURLSessionに対して dataTaskWithRequest: メソッドを呼び出す NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request]; // resumeで処理開始 [dataTask resume]; }
19.
NSURLSessionTaskDelegeteの実装 // // // // Screen1ViewController.h NoUseStoryBoard ! #import <UIKit/UIKit.h> ! @interface Screen1ViewController
: UIViewController <NSURLSessionTaskDelegate> { @private NSMutableData *mutableData; } ! @end
20.
- (void)viewDidLoad { [super viewDidLoad]; //
Do any additional setup after loading the view. // 受信データ用 ! mutableData = [NSMutableData new]; // defaultSessionConfiguration or backgroundSessionConfiguration NSURLSessionConfiguration *configration = [NSURLSessionConfiguration defaultSessionConfiguration]; // NSURLSessionConfigurationを指定して NSURLSession作成 NSURLSession *session = [NSURLSession sessionWithConfiguration:configration delegate:self delegateQueue:nil]; // リクエスト作成 NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]; // 先に作成したNSURLSessionに対して dataTaskWithRequest: メソッドを呼び出す NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request]; // resumeで処理開始 [dataTask resume]; } ! // データ受信時 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { [mutableData appendData:data]; } ! // 完了時 - (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { if(error){ // エラーハンドリング }else{ NSString *str= [[NSString alloc] initWithData:mutableData encoding:NSShiftJISStringEncoding]; NSLog(@"%@",str); } }
21.
動かしてみる
Download now