4

私はRESTfulAPIに対して機能するphonegapアプリケーションを書いています。デバッグの目的で、POSTとGETがどのように見えるかを確認したいと思います。グーグルのすべての情報は、フィドラープロキシを使用するように言っています。fiddlerをインストールして動作させ、それを使用するようにandroidエミュレーターをセットアップしましたが、RESTfulサービスのクエリを開始するたびに、パケットが何らかの形で(または少なくともその認証部分で)壊れます。

プロキシを使用していない場合、次のJSコードはAndroidエミュレーターで正常に機能します。

$.post("https://blah.hi.com/homepage/security_check",
     $("#loginForm").serialize(), function (data, textStatus, jqXHR) {...

しかし、Androidアプリが行っているリクエストを分析できるように、フィドラーを使用していると、次のエラーが発生します。

ここに画像の説明を入力してください

フィドラーで最初のリクエストを調べてわかる限り、次の変更が行われます。

User-Agent、Connection、およびHostヘッダーが削除されます。Fiddlerルールを使用して手動で追加しようとしましたが、うまくいきませんでした。

ここに良い比較があります:

ここに画像の説明を入力してください

また、リクエストの[TextView]タブを見ると、[拡張機能]の下の次の見出しが削除されています(以下は、Chromeを使用し、フィドラーを通過したときにリクエストがどのように表示されるかを示しています)。

ここに画像の説明を入力してください

これが、Eclipse androidエミュレーター、fiddlerを通過し、失敗した場合です。 ここに画像の説明を入力してください

WireSharkを使用することを考えましたが、すべての通信はhttpsを介して行われるため、フィドラーを使用することをお勧めします。

アドバイスをいただければ幸いです!! また、次の引数を使用してプロキシにアクセスします-http-proxy 127.0.0.1:8888 from here http://vkosinets.com/blog/2011/08/16/debug-http-requests-from-android-emulator

編集:Android 4.Xエミュレーターを使用する場合のデバッグ情報を次に示します(これも失敗します)。 ここに画像の説明を入力してください

4

1 に答える 1

1

古い Android SDK/Emulator バージョンに対して報告された問題である可能性が非常に高いです。

問題 12356: プロキシ経由の https 接続でヘッダーが失われる

関連する問題で欠落しているヘッダーの議論も確認する価値があります。

問題 3334: Wi-Fi 経由で接続されていない場合、ブラウザ アプリケーションで SSL Web サイトの読み込みに失敗する

この投稿によると、この問題は Android 3.x 以下のバージョンにのみ存在するようです。

この問題は、Android 3.x 以前のバージョンでのみ発生します。iOSは問題ありません。すべての主要なデスクトップ ブラウザーは問題ありません。Android 4.x は問題ありません。

Android 4.x エミュレーターを使用してみて、それが機能するかどうかを確認してください。

アップデート:

状況によっては不明なバグ以外は、おそらく構成が難しいものです。Android エミュレーターで永続的な信頼できる CA を設定するを確認してください。

Android エミュレーターで永続的な信頼できる CA を設定することは、SSL を適切に使用するエミュレーター内のアプリケーションを評価するときに常に発生する一般的な問題です。目標は、Android エミュレーターで実行されているアプリケーションからの中間者 (MITM) トラフィックです。

MITM トラフィックを正常に処理するには、中間ノードの認証局 (CA) がデバイスによって信頼されている必要があります。信頼されていない場合、一般的な SSL ハンドシェイク エラーで接続が失敗します。通常、中間ノードは、cacerts ファイルを変更してデバイスを再起動することにより、root 化された電話で信頼済みとしてフラグを立てることができます。Android エミュレーターでこれを実行しようとすると、仮想デバイスを再起動すると、OS が多くのシステム ファイル (cacerts ファイルを含む) を基本状態に戻します。この投稿の残りの部分では、再起動後にコア システム ファイルへの変更を保持するエミュレーターをセットアップする方法について説明します。これは (私の知る限り) 1 か所に文書化されていないため、この問題に直面しているユーザーの時間を節約できることを願っています。

... ... ...

于 2013-02-04T01:55:30.577 に答える