ASIHTTPRequestで非同期通信する

NSURLConnectionを使うと非同期通信の処理は書けるのですが,結構記述するのは面倒です.NSURLConnectionを使った非同期通信については旧blogで書いているので,そちらで書きたい方は下記のエントリーを参照ください.

http://d.hatena.ne.jp/touka_tt/20120712/1342031185

今回はASIHTTPRequestというライブラリを使います.

導入

http://allseeing-i.com/ASIHTTPRequest/

まず,上記のURLから最新版のASIHTTPRequestをダウンロードします. ダウンロードしたファイルの中のClassesディレクトリの中のファイル(サブディレクトリはいらない)と,Externalの中にあるReachability.hとReachability.mをプロジェクトにコピーします.

さらに

  • libz.dylib
  • SystemConfiguration.framework
  • MobileCoreService.framework
  • CFNetwork.framework

をプロジェクトに追加.これで使用の準備は終わりです.

簡単な非同期通信

Delegateの説明

NSURLConnectionを使った非同期通信でも同じですが,通信を開始する処理に加え,いくつかDelegateを実装する必要があります.

この二つを実装する必要があります.名前の通り,前者は通信が正常に終了した場合,後者は通信が失敗した場合に呼ばれる関数になります.

通信の開始部

ただ単に情報を取得したいだけであれば,使用したい.mファイルでASIHTTPRequest.hを読み込みましょう.そして,通信を開始する部分に以下を記述

さらにDelegateを実装します.

見て分かりますとおり,取得したデータは[request responseString]で取得できます.らくちんですね.

POSTでデータを送信する

先のコードはデータを取得するだけでしたが,今度はデータを送信します. 例えば今回はUserAgentや,任意のテキストを追加してみましょう.今度はASIFormDataRequest.hを使いたい箇所でimportします.そして通信を開始したい部分に以下を記述します.

こんな感じになります.受信部分は先と同様です.

通信のidentify設定

同一クラスで様々な通信を行う場合,個々の通信のidentifyを設定したいのですが,ここではUserInfoプロパティを使うことで設定が出来ます.

こんな感じでuserInfoプロパティを使うことで振り分けが出来ます.


コメントを残す