2010 年 8 月 のアーカイブ

Androidエミュレータの通信をFiddlerで見る




















Androidのアプリ開発をするときに、サーバとの通信を確認したいということはよくあります。

通信の確認にFiddlerを組み合わせて使うことで、XMLを整形された状態で見たり、詳細なHTTPヘッダを確認したり、リクエストを改ざんしたり、アプリプログラム側を変更せずに開発サーバを見に行くようにしたりできるようになります。自分のローカルマシンだけでサーバ・クライアントモデルの開発が完了できる環境を作っておくと楽ですね。

Fiddlerについてはこちら。
実はFiddlerがすごすぎたので、機能まとめ紹介 : blog.loadlimit – digital matter –

AndroidエミュレータのHTTP Proxy設定方法について参考にしたのはこちら。
[Android] エミュレーターのプロキシ設定(Using the Emulator with a Proxy) – adakoda

AndroidのブラウザでGoogleニュースを見たときのリクエストはこんな感じで覗けます。

emurator

fiddler_http_debug

具体的なやり方は以下の通り。
あと、開発はEclipseで行っていると仮定しますが、別にエミュレータそのまま起動する場合でもOKです。

Fiddlerインストール

FillderのメニューからTools→Fiddler Optionsを選択
menu_options

Connectionsタブから、Allow remote computers to connectを選択して、ローカルマシン以外からのアクセスを受け付ける
fiddler_allow_remote
併せて、その上のFldder listens on portを覚えておく。ここでは8888を使用。

Fiddlerを一度終了して、起動する

EclipseのメニューのWindows→Preferencesを開いて、左側のツリーからAndroid→Launchを選択、Default emulator optionsに-http-proxy http://[ローカルマシンのIP]:[先ほど調べたFiddlerのポート]を入力。
preferences

すでにプロジェクトを作ってしまっている場合には、メニューのRun→Run configurationsからAdditional Emulator Command Line Optionsを設定する。
run_configurations

これで、ApplyしてRunすれば、ProxyにFiddlerを経由して開発することができるようになります。

あとは、必要に応じて、UserAgentにAndroidが含まれているかどうかなどをFiddlerのフィルタにセットすればOKです。

FiddlerのHOSTS機能でサーバのドメインを開発用のVirtualPCなどに割り当てれば、一台で完結できます。

FiddlerのメニューからTools→HOSTSを選択
menu_hosts

開発マシンのIPとドメインを設定してやればOKです。
hosts 

ただし、Androidのブラウザの場合、どうやら存在するドメインでないと、リクエストできないみたいです。おそらくHTTPリクエスト前にDNS名前解決を一度しているのではないかと思います。ドメイン存在していれば大丈夫なので、たいした問題ではないかと思います。


phpMyAdminのYAMLエクスポートとsymfonyのfixture




















Symfony 1.4+Doctrineにて。テストを実行するために、fixtureを用意するのですが、

$ symfony doctrine:data-dump dump.yml

でやろうとしたらデータが重すぎて途中で落ちる。

ので、phpMyAdminにYAMLエクスポート機能がいつの間にか実装されていたので、それを使って必要な部分だけをエクスポートします。

ところがそれをそのまま読み込むといくつか問題が…

ということで、気になった3点。

  • 改行があると読み込めない
  • 日付形式が読み込めない
  • fixtureのymlファイルよりインデントひとつ分浅い

改行のある行はダブルクォートで囲ってから、改行文字を\nにすれば読み込めるようになります。

日付はダブルクォートで囲めばOK。

インデントは置換するなり何なりしましょう。

テスト周りに関してはチートシートが欲しいなぁ…