前回までに引き続き、Heroku/Cedar上でSAStrutsを動かしてみる。
今回はmacbook proの環境をLion+XCode4.3にしたので、せっかくなのでiOSアプリと連携してみる。
元ネタはこちら
Getting Started with iOS Development using Sinatra on Heroku / Cedar
元ネタの環境構築やらトラブルシューティングをのぞいた手順。
- Write Your Web API App
- Declare Gem Dependencies With Bundler
- Declare Process Types With Foreman/Procfile
- Store Your App in Git
- Deploy to Heroku/Cedar
- Create Your iOS Client App
- Declare iOS Dependencies with CocoaPods
- Write A Table View Controller
- Configure AppDelegate
- Build & Run
Heroku側は前回までと同様SAStrutsを使う+今回はDB使わないので、
今回のHeroku側に上げるアプリ作成手順は、
となります。
元ネタではSinatraを使ってJSONを返していますので、
4.「JSONを返すメソッドの実装」にてSAStrutsでJSONを生成して返す処理だけ実装します。
それ以外は前回までと同様です。
4.「JSONを返すメソッドの実装」
単純にJSON文字列を返すメソッドを実装します。
今回実装する機能はこれだけなので、index/IndexActionに実装してしまいます。
package com.febc.action;
import org.seasar.struts.annotation.Execute;
import org.seasar.struts.util.ResponseUtil;
public class IndexAction {
@Execute(validator = false)
public String index() {
ResponseUtil.write("{\"sushi\":[\"鮪\",\"鰤\",\"雲丹\",\"鯖\",\"海老\",\"鮭\",\"鯛\"]}", "text/json");
return null;
}
}
元ネタではローマ字表記の寿司ネタですが、
本場日本ですから当然漢字表記します。
※おとなしくオブジェクトをJSON変換すればよかったんですが、
楽しようと思って手書きでJSONを書いた結果、フォーマットが正しくなく、
iOS側で読み込めないという事態が発生しました。
ダブルクォートをシングルクォートにしてたのがよくなかったらしい。
これで2時間くらい飛びました。
後はローカルでforeman startして動作確認できたらHeroku側にpush。
この辺は前回までと全く一緒です。
そしてここからが問題のiOS側。
基本的に元ネタをたどればいいはずなのにちょいちょいコケるポイントがありました。
続きはまた次回。