2012年2月23日木曜日

バイナリデータのSOAPレスポンス


前項「SOAP レスポンスのパース」で受信したSOAPレスポンスが文字列の場合はResultの値をそのまま使えますが、バイナリデータの場合はbase64エンコードされた文字列で送られてくるため、これをデコードする必要があります。ところがiOS SDKにはこの機能が含まれていません。

BASE64エンコード/デコードのソースはいくつか見つかりましが、最初にダウンロードしたMatt Gallagher氏のソースをそのまま利用しています。ダウンロードしたソース中の次のふたつのファイルをプロジェクトに加えるだけです。
NSData+Base64.h
NSData+Base64.m

NSDataのCategoryでメソッドが追加されているので、次の要領でbase64のNSStringからNSDataオブジェクトを作れます。

NSData *binData = [NSData dataFromBase64String:soapResult];

BASE64エンコードしたバイナリデータとファイル名などのメタ情報をString配列として返すことができます。

関連Blog

iOS アプリからのSOAP/WebServiceへのアクセス
SOAP レスポンスの受信
SOAP レスポンスのパース
バイナリデータのSOAPレスポンス
SOAPリクエスト/レスポンスとの同期


<参照>
Base64 encoding options on the Mac and iPhone
AES128暗号化ライブラリ FBEncryptor 公開

0 件のコメント: