iPhoneアプリ:Twitpicアップローダをつくる その2

このエントリーを含むはてなブックマークはてなブックマーク - iPhoneアプリ:Twitpicアップローダをつくる その2

前回は写真をTwitpicにアップロードするため、ライブラリの設定までを行ないました。今回は、実際にアップロードするプログラムを書いていきます。

コードを書くにあたって、以下のサイトのコードを利用させていただきました。感謝!
iPhoneアプリからTwitpicに画像をアップロードする方法

TwitterTestViewController

- (void) uploadPhotoUserName:(NSString*)name password:(NSString*)pass 
						text:(NSString*)text image:(UIImage*)img
{
    NSURL *url = [NSURL URLWithString:@"http://twitpic.com/api/uploadAndPost"];
    ASIFormDataRequest *request = [[[ASIFormDataRequest alloc] initWithURL:url] autorelease];
    
    NSData *twitpicImage = [[[NSData alloc] initWithData:UIImagePNGRepresentation(img)] autorelease];
	
    [request setPostValue:name forKey:@"username"];
    [request setPostValue:pass forKey:@"password"];
    [request setData:twitpicImage forKey:@"media"];
	[request setPostValue:text forKey:@"message"];
    [request start];
    

    NSData *response = [request responseData];
    NSArray *results = PerformXMLXPathQuery(response, @"/rsp/@stat");
    if ([results count] != 0) {
        NSString *stat = [[results objectAtIndex:0] objectForKey:@"nodeContent"];
        if (![stat isEqualToString:@"ok"]) {
			UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Information" message:@"failed to upload" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
			[alert show];
			[alert release];
        }
    }
}

- (void)viewDidLoad {
    [super viewDidLoad];
	[self uploadPhotoUserName:@"ユーザ名" password:@"パスワード" text:@"Test Message" image:[UIImage imageNamed:@"test.jpg"]];
}

アップロードに重要な動作は全てuploadPhotoUserNameメソッドの中に記述されています。このメソッドに、Twitterのユーザ名、パスワード、投稿する文章、画像を引数として渡すことで、自動的にTwitpicに画像、Twitterにメッセージを投稿してくれます。

uploadPhotoUserNameメソッドの内部では、ASIFormDataRequestクラスのインスタンスを作成し、そのインスタンスに必要情報を全て格納し、アップロードしています。

今回のプロジェクトをココに置いておきます。
参考にしてみてください。

TwitterTest.zip

次回は、アップローダのインタフェースを設計していきます。

2 Responses to “iPhoneアプリ:Twitpicアップローダをつくる その2”

  1. kitcut より:

    初めまして。
    とても参考になりました。ありがとうございます。
    サンプルソースを実装してuploadまでは出来たのですが、レスポンス(PerformXMLXPathQuery)の箇所で「unable to parse」となってしまいます。
    勝手ではございますが、原因等の想定出来ることがあれば教えていただきたいのです。よろしくお願いいたします。

    • Hokuson より:

      コメントありがとうございます。
      管理人のHokusonです。

      こちらでも調べていたのですが、
      いまいち原因が分からないのが現状です。
      お役に立てず、申し訳ございません。

      XAuthに対応したTwitPicアプリの作成方法を
      こちらにまとめましたので、参考にしていただければ幸いです。
      http://iphone.moo.jp/app/?p=571

Leave a Reply

You must be logged in to post a comment.