(前回)Cocoaの日々: Keychain Services 調査 (22) twitpic へ画像をアップロード(その2)asi-http-request を使う
いよいよ twitpic へ画像をアップロードする。今回は sample.jpg を用意してこれをアップロードしてみよう。
asi-http-request ではフォームデータ送信用のクラス ASIFormDataRequest が用意されており、これを使うと multipart/form-data なリクエストも数行で送信することができる。使い方は How to use it の中の Sending data with POST or PUT requests に書かれている。
ASIHTTPRequest example code - All-Seeing Interactive
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Ben" forKey:@"first_name"];
[request setPostValue:@"Copsey" forKey:@"last_name"];
[request setFile:@"/Users/ben/Desktop/ben.jpg" forKey:@"photo"];
やってみよう。sample.jpg を xcodeのプロジェクトへ追加した後、下のコードを書く。
NSURL *url = [NSURL URLWithString:@"http://twitpic.com/api/uploadAndPost"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:loginAccount.loginId forKey:@"username"];
[request setPostValue:loginAccount.password forKey:@"password"];
NSString* filepath = [[NSBundle mainBundle] pathForImageResource:@"sample"];
NSLog(@"filepath=%@", filepath);
[request setFile:filepath forKey:@"media"];
[request setPostValue:@"Hello twitpic!" forKey:@"message"];
[request startSynchronous];
NSError* error = [request error];
if (!error) {
NSString* response = [request responseString];
NSLog(@"%@", response);
} else {
NSLog(@"error: %@", error);
}
実行してみよう。ID, パスワードを入力する。
Login を押すとリクエストが飛ぶ。ログを見るとうまく行っているようだ。
KeychainSample2[3461:80f] updated keychain item
KeychainSample2[3461:80f] filepath=/Users/hashi/development/SampleCode/KeychainSample2/build/Debug/KeychainSample2.app/Contents/Resources/sample.jpg
KeychainSample2[3461:80f]
Twitpic のページを表示してみる。
出た。ちょっとうれしい。