メモ:androidアプリ内からjsonicを使ったサーブレットとJSONなやり取り
サーブレット
- eclipseのindigo。wtp系。
- Serverのランタイムを設定する。Server の Runtime Environments に Tomcatの6やら7やら設定。(ランタイムはServerを作る途中でも設定できる)ランタイムに設定するTomcatは、zip解凍したてのまっさらなやつなどが良い。Serverはここにあるxmlなどをコピーしてきてしまうので。
- Serverを作る。File → New から Serverを作ってTomcatの6やら7やらにして1こ作る
- webアプリを作る。File → New から Dynamic Web Project で「myweb」とか。
- サーブレットを作る。適当なパッケージを作り、適当な名前のサーブレット HelloServlet を作る。web.xmlへのマッピング 例えば /hello を忘れずに。
- jsonicのサイトかダウンロードしてきて、WEB-INF/libに、jsonicのjarをこぴぺする。
- 適当なパッケージに、POJOなクラス Hoge を作る。String msg に getter/setterぐらいの。
- 作ったサーブレットのdoGetを書く。
Hoge hoge = new Hoge(); // オブジェクトにきた値をいれる hoge.setMsg(request.getParameter("msg")); // jsonic使ってjsonにする String jsonObject = JSON.encode(hoge); response.setContentType("application/json"); PrintWriter out = response.getWriter(); out.print(jsonObject); out.flush();
- Serverを起動してブラウザから http://127.0.0.1:8080/myweb/hello (←たぶんこんなん)にアクセスする
{"msg":null}
Servierの起動は「Servers」のviewを表示してそこからぽちるようにしている。
android
- Androidのアプリをつくる
- 画面はtextviewが1こあればよし
- フォルダ「lib」など作って、jsonicのjarをこぴぺする
- プロジェクトのビルドパスの設定に、追加したjsonicのjarを追加する
- jarの追加はこんな風にやるのが正しいかは不明。
- こちら Android組込みのHttpComponent(HttpClient)の正しい使い方といくつかのtips - terurouメモ をがっつり参考にして、書くが、アクセス先は注意。
Uri.Builder builder = new Uri.Builder(); builder.scheme("http"); builder.encodedAuthority("10.0.2.2:8080"); builder.path("/myweb/hello"); builder.appendQueryParameter("msg", "hello world!!");
ローカルのTomcatにアクセスというと、127.0.0.1:8080/webappname なのだけど、androidからの場合は、ローカルホストのアドレスが「10.0.2.2」らしい!。ちょーびっくりしたー! ポート番号は続けて書いてみたらうまくいったが、他の書き方があるかは不明。appendQueryParameter で 「msg」をキーに「hello world!!」をいれておく。
結果となる String result はjsonicを使ってデコードしてみる。そのためには、mywebのほうの「Hoge」クラスを、コピーしてandroidのプロジェクトにも持ってきておくか、内容が同じものを作る。
// JSONでデコード Hoge hoge = JSON.decode(result, Hoge.class); // textviewはTextView // オブジェクトのメソッドで値を取り出してセットする textview.setText(hoge.getMsg());
もっと項目を増やすとか、配列にするとかすると、それっぽくなるかも