- 2009-03-01 17:42
- android
Androidを含めるネットデバイスの魅力の1つはWebとのマッシュアップにあります。
私はWebAPIを使ったAndroidアプリの開発を行って来たので、
その時に役立った事をここでメモしておく事にします。
Webとの通信は主にHTTP(S)を使います。
WebAPIを使った場合、コノ部分でバグがおきやすい。
なので、ここではHTTP(S)通信部分のデバッグ方法をご紹介します。
デバッグと言っても通信をデバッガでアタッチできるわけではないので、
HTTP(S)をダンプします。地味ですw
FirefoxではLive HTTP Headersなどのプラグインを組み込めば、
HTTPヘッダを覗き見できるのである程度のデバッグも可能です。
しかし、Androidではそのようなダンプツールはありません。
そのため、HTTP(S)通信にプロキシサーバを通す事でダンプする事にします。
HTTPをダンプできるプロキシサーバはいくつかありますが、私はWebScarabというアプリを使いました。
Windows,Mac,Linuxで動作します。
私はMac版をダウンロードして使っています。
WebScarabには難しい設定は殆どありません。
アプリを起動すれば殆どスグ使えます。
一応、設定画面で設定項目をチェックします。
まずプロキシサーバの設定を確認しておきます。

Addressをホストマシン(WebScarabが動作するマシン)のIPに設定して下さい(デフォルトはlocalhostになっています)。
Portは何でも良いですが、デフォルトは8008となっています。
Use Pluginsにチェックが入っている事も確認して下さい。これがダンプ情報を表示してくれます。
次にWebScarabでダンプするリクエストの設定を確認しておきます。

ダンプしたいリクエスト(ここではGETとPOST)が選択されている状態で、かつ、Intercept requestsにチェックが入っていることを確認して下さい。
以上です。これで192.168.0.101:8008がプロキシサーバになりました。
AndroidからProxy経由でHTTP(S)アクセスするようにプログラムを変更します。
変更前を下記とします。
HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("http://target-uri"); client.execute(post);//POSTリクエストを送信
このPOSTリクエストをWebScarabでダンプするようにプログラムを修正します。
修正後の例を示します。
HttpClient client = new DefaultHttpClient(); HttpPost post = new HttpPost("http://target-uri"); HttpHost proxy = new HttpHost("192.168.0.101", 8008);//Proxyサーバのアドレスとポート番号 client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);//Proxyを設定 client.execute(post);//POSTリクエストを送信
たった2行追加しただけです。
これで、WebScarab経由でhttp://target-uriへアクセスできます。
WebScarabを経由する時にそのリクエスト内容をダンプでき、デバッグに役立つはずです。
例えば、以下のようなダンプ情報を取得する事ができます。

WebScarabはJavaで動作しています。
デフォルトのヒープサイズが小さいので、ちょっと大きめのデータをPOSTするとOut Of Memoryになってしまいます。
その場合、コマンドラインからヒープサイズを指定して起動するとよいでしょう。
$ ls
webscarab-selfcontained-20060718-1904.jar
$ java -Xmx512m -jar webscarab-selfcontained-20060718-1904.jar
この例では最大ヒープサイズを512MBでWebScarabを起動しています。
全てのプラットフォームで共通のJARを使っているでしょうから、
Mac以外でも、jarファイルを見つけ出して、同じコマンドを打てばヒープを大きくしてWebScarabを起動できます。
ご参考までに。
- Newer: Android Marketにアップデート機能
- Older: simejiをAndroid Marketに登録しました
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.adamrocker.com/blog/242/debug-android-mashup-app.html/trackback/
- Listed below are links to weblogs that reference
- AndroidでWebマッシュアップ開発の基礎 from throw Life
