Приложение Android не может подключиться к локальному IP в эмуляторе через прокси - PullRequest
2 голосов
/ 27 января 2012

Мне нужно иметь возможность вставлять прокси между моим приложением и HTTP-сервером, с которым оно связывается.HTTP-сервер работает на другом компьютере в локальной сети.Прокси-сервер работает на той же машине, что и эмулятор.

Я использую Android-10 и испытываю те же проблемы в Ubuntu и Windows 7.

Если я запускаю эмулятор следующим образом:

emulator.exe @default

Тогда приложение будет нормально подключаться.

Однако, если я запусту приложение следующим образом:

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

Запросы, сделанные из интернет-браузера (дляGoogle) пройдет через прокси-сервер, но приложение не сможет установить соединение.

Я попытался установить параметры прокси-сервера в APN, а также использовать IP-адрес локальной сети моей локальной машины.

Приложение использует 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 никогда не выполнялсямаркиэто к прокси.

Любые рекомендации о том, как продолжить устранение неполадок этой проблемы?

Ответы [ 2 ]

1 голос
/ 28 января 2012

На случай, если кто-нибудь придет посмотреть, вот как я решил эту проблему:

Я настроил приложение для непосредственного общения с прокси:

10.0.2.2:8080

Затем я настроил прокси наперенаправьте все эти запросы на сервер:

FORWARD  -> 192.168.3.30

Не самое симпатичное решение, но оно отлично работает в тестовой среде.

1 голос
/ 27 января 2012

Вы должны использовать 10.0.2.2 вместо 127.0.0.1.Android считает, что локальный хост вашего компьютера - 10.0.2.2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...