AndroidからはじめるiOS

AndroiderがiOSアプリ開発に挑戦するメモ

AFNetworkingを使ってJSONと画像を送ってみる

ライブラリ導入までの無駄な紆余曲折は前回の通り。

本題、通信ライブラリ、AFNetworkingを導入する。
AFNetworking/AFNetworking · GitHub

ネットワーク通信回りのライブラリで、Androidで言えばVolleyに近いですね。
リンゴ社が推してるわけではありませんが。

今回やりたかったのはJSONのテキストと画像をPOSTして、結果のJSONを受け取ること。
公式のREADMEのMulti-Part Request が一番近そう。

サンプルのコードでは画像がローカルに保存されているパスだったが、
UIImageとして持っている画像を送りたかったので、先にUIImageからNSDataに変換。
NSData *imageData = UIImageJPEGRepresentation(image, 1.0);

サンプルの
[formData appendPartWithFileURL:filePath name:@"image" error:nil];
部分を
[formData appendPartWithFileData:imageData name:@"image" fileName:@"tmp.png" mimeType:@"image/jpeg"];
上記のように変更する。
[manager POST:@"http://hoge.fuga.com/" parameters:param constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileData:imageData name:@"image" fileName:@"tmp.png" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];