2012-01-27 3 views
2

내 애플리케이션과 통신하는 HTTP 서버 사이에 프록시를 삽입 할 수 있어야합니다. HTTP 서버가 LAN상의 다른 시스템에서 실행 중입니다. 프록시가 에뮬레이터와 동일한 시스템에서 실행 중입니다.Android 애플리케이션이 프록시를 통해 에뮬레이터의 로컬 IP에 연결할 수 없습니다.

나는 안드로이드-10를 사용하고, 나는이 같은 에뮬레이터를 시작하면 우분투 및 Windows 7

에서이 같은 문제가 발생하고있다 :

emulator.exe @default 

그런 다음 응용 프로그램이 잘 연결됩니다. 나는이 같은 응용 프로그램을 시작하는 경우

그러나, (구글에) 인터넷 브라우저에서 만든

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

제 문제는 앱이 제 3 자에 의해 개발 되었기 때문에 소스가없고 프록시 서버에 사용되는 URL을 변경할 수 없지만 프록시를 통한 네트워크 트래픽을 테스트해야하며 일부는 더 완벽하다고 말합니다 soon soon – rob

1

127.0.0.1 대신 10.0.2.2를 사용해야합니다. 안드로이드는 PC의 로컬 호스트가 10.0.2.2라고 생각합니다. 경우에는 누군가가 내가이 문제를 해결하는 방법, 여기에보고 온다

+0

도움이되기를 바랍니다. 올바르게 표시하십시오. – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

맞습니다.이 설정은 프록시를 APN 설정에 적용 할 때의 설정입니다. 이렇게하면 요청이 브라우저에서 프록시로 전달되지만 요청은 응용 프로그램에서 프록시를 거치지 않습니다. – Dan

+1

청취중인 프록시 서버는 어느 주소입니까? 최악의 경우에는 HttpParams params = httpclient.getParams(); params.setParameter (ConnRoutePNames.DEFAULT_PROXY, 새로운 HttpHost (프록시, 포트), httpclient.setParams (params); 그것이 도움이되기를 바랍니다 –

관련 문제