2012-01-27 19 views
2

私のアプリケーションと通信するHTTPサーバの間にプロキシを挿入できる必要があります。 HTTPサーバーは、LAN上の別のマシンで実行されています。プロキシはエミュレータと同じマシンで実行されています。Androidアプリケーションがプロキシ経由でエミュレータのローカルIPに接続できない

私はアンドロイド-10を使用しています、と私はこのようなエミュレータを起動した場合はUbuntuとWindows 7の

にこれらの同じ問題が発生しています:

emulator.exe @default 

次に、アプリケーションが正常に接続されます。

私はこのようなアプリケーションを起動した場合しかし、:(Googleに)インターネットブラウザから作られた

emulator.exe @default -http-proxy 127.0.0.1:8008 

リクエストは、プロキシを経由しますが、アプリケーションは、接続をすることはできません。

ローカルマシンのLAN IPアドレスを使用して、APNのプロキシ設定を設定しようとしました。

アプリケーションはHTTP(http://developer.android.com/reference/java/net/HttpURLConnection.html)を使用しているため、プロキシは要求を解釈できる必要があります。

プロキシをオフにして、プロキシをオンにしないで、エミュレータ内のインターネットブラウザを通じてサーバーにアクセスできます。

私は次の行でエミュレータを実行しました:

emulator.exe @default -http-proxy 127.0.0.1:8008 -debug-proxy 

や要望として出て行っていたことに気づい:

http_service_connect: trying to connect to 192.168.3.131:8080 
http_service_connect: using HTTP rewriter 
tcp:192.168.3.131:8080(35): connecting 
tcp:192.168.3.131:8080(35): connected to http proxy, sending header 
tcp:192.168.3.131:8080(35): sending 39 bytes: 
>> 43 4f 4e 4e 45 43 54 20 31 39 32 2e 31 36 38 2e CONNECT 192.168. 
>> 33 2e 31 33 31 3a 38 30 38 30 20 48 54 54 50 2f 3.131:8080 HTTP/ 
>> 31 2e 31 0d 0a 0d 0a        1.1.... 

tcp:192.168.3.131:8080(35): header sent, receiving first answer line 
tcp:192.168.3.131:8080(35): received 'HTTP/1.0 200 Connection established' 
tcp:192.168.3.131:8080(35): receiving second answer line 
tcp:192.168.3.131:8080(35): received '' 
tcp:192.168.3.131:8080(35): connection succeeded 

しかし、誰GETやPOSTリクエストが今までプロキシにそれを行うものではありません。

この問題のトラブルシューティングを続ける方法に関する推奨事項はありますか?

答えて

1

誰もがここ、探して来る場合、私はこの問題を解決する方法である:私はプロキシと直接話をするようにアプリケーションを設定

:次に

10.0.2.2:8080 

を、私はすべてを転送するようにプロキシを設定しサーバーへのこれらの要求:

FORWARD -> 192.168.3.30 

しかし、最も良い解決策ではありませんが、テスト環境では問題ありません。

+0

OK ..それではどのように達成するのですか?私も同じ問題があることを説明してください。 –

+0

プロキシをサーバーのように直接話すようにアプリケーションを構成します。プロキシは、アプリケーションからサーバー要求を受け取ります...そして、それを実際のサーバーに転送するように構成できます(選択した場合は要求を変更します)。 – Dan

+0

私の問題は、アプリケーションがサードパーティによって開発されたことです。ソースがなく、アプリケーション内で使用されているURLをプロキシサーバーに変更することはできませんが、プロキシ経由でネットワークトラフィックをテストする必要があります。すぐに回答する – rob

1

127.0.0.1の代わりに10.0.2.2を使用する必要があります。 AndroidはあなたのPCのlocalhostが10.0.2.2だと思っています。

+0

こちらがお役に立てば幸いです。それが正しい場合、それをマークしてください。 – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

これは正しいことです。これは、プロキシをAPN設定に入れるときの設定です。 私はその要求をブラウザからプロキシに送信しますが、アプリケーションからプロキシをバイパスします。 – Dan

+1

お使いのプロキシサーバーのアドレスは?最悪の場合、HttpParams params = httpclient.getParams();を使用してください。 params.setParameter(ConnRoutePNames.DEFAULT_PROXY、新しいHttpHost(プロキシ、ポート); httpclient)。setParams(params);それが助けてくれることを願って –

関連する問題