Доступ к localhost: порт из эмулятора Android - PullRequest
190 голосов
/ 20 июля 2011

У меня на локальном компьютере запущен веб-сервис с localhost:54722.

Я хочу вызвать сервис из приложения, запущенного в эмуляторе Android.

Я прочиталчто использование 10.0.2.2 в приложении приведет к доступу к localhost, но, похоже, он не работает и с номером порта.Там написано HttpResponseException: Bad Request.

Ответы [ 21 ]

354 голосов
/ 01 марта 2012

Вы можете получить доступ к хост-машине с IP-адресом "10.0.2.2".

Это было разработано таким образом командой Android. Таким образом, ваш веб-сервер может отлично работать на локальном хосте, а из вашего приложения для Android вы можете получить к нему доступ через «http://10.0.2.2:<hostport>».

Если ваш эмулятор должен иметь доступ к Интернету через прокси-сервер, вы можете настроить собственный HTTP-прокси с экрана расширенных элементов управления эмулятора. Открыв эмулятор, нажмите Еще dots, а затем нажмите Настройки и Прокси . Отсюда вы можете определить свои собственные настройки прокси HTTP. screen-shot for HTTP config

51 голосов
/ 27 сентября 2014

Используйте 10.0.2.2 для AVD по умолчанию и 10.0.3.2 для Genymotion

14 голосов
/ 22 января 2016

Если вы используете IIS Express, вам может потребоваться привязать все имена хостов, а не просто `localhost '. Проверьте этот хороший ответ:

https://stackoverflow.com/a/15809698/383761

Скажите IIS Express, чтобы он связывался со всеми ip-адресами и именами хостов. В вашем файле .config (обычно% userprofile% \ My Documents \ IISExpress \ config \ applicationhost.config или $ (solutionDir) .vs \ config \ applicationhost.config для Visual Studio 2015), найдите обязательный элемент вашего сайта и добавьте

<binding protocol="http" bindingInformation="*:8080:*" />

Обязательно добавьте его в качестве второй привязки вместо изменения существующей, или VS просто повторно добавит новый сайт с добавлением (1) Также вам может потребоваться запустить VS от имени администратора.

10 голосов
/ 19 июня 2017

Я решил это с помощью установки «Конвейер по Keyoti» в Visual Studio Professional 2015. Конвейер сгенерировал УДАЛЕННЫЙ адрес (ваш IP) с портом (45455), который разрешает внешний запрос.Пример:

enter image description here

Конвейер позволяет тестировать веб-приложения с внешних планшетов и телефонов в сети или с эмуляторов Android (без http://10.0.2.2:<hostport>)

Шаги по следующей ссылке:

https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

9 голосов
/ 30 октября 2017

Я столкнулся с той же проблемой при запуске веб-приложения в IIS Express в Visual Studio.чтобы исправить это, вам нужно перейти в свойства вашего проекта, затем нажать на вкладку «Отладка» и изменить http://localhost:[YOUR PORT] на http://127.0.0.1:[YOUR PORT] и установить URL-адрес Android на http://10.0.2.2:[YOUR PORT].у меня это сработало.

8 голосов
/ 20 июля 2011

У меня на локальном хосте работает веб-сервер.

Если я открываю эмулятор и хочу подключиться к своему локальному хосту, я использую 192.168.x.x. Это означает, что вы должны использовать свой локальный IP-адрес. Кстати, ваш HttpResponseException (Bad Request) не означает, что хост недоступен.

Некоторые другие ошибки приводят к этому исключению.

6 голосов
/ 19 сентября 2017

Проблема в том, что эмулятор Android отображает 10.0.2.2 на 127.0.0.1, , а не на localhost.Поэтому настройте свой веб-сервер на serveron 127.0.0.1:54722, а не localhost:54722.Это должно сделать это.

3 голосов
/ 06 декабря 2012

вам нужно установить URL как 10.0.2.2:portNr

portNr = указанный порт ASP.NET Development Server, на котором работает моя текущая служба localhost:3229/Service.svc

так что мой URL 10.0.2.2:3229

Я решил эту проблему таким образом

Надеюсь, это поможет ...

3 голосов
/ 23 июля 2012

«BadRequest» - это ошибка, которая обычно отправляется самим сервером, см. rfc 2616

10.4.1 400 Bad Request

Запросне может быть понят сервером из-за неправильного синтаксиса.Клиент НЕ ДОЛЖЕН повторять запрос без изменений.

Итак, у вас есть работающее соединение с сервером, но ваш запрос не соответствует форме эксперта.Я не знаю, как вы создаете соединение, какие заголовки включены (если они есть) - но это то, что вы должны проверить.

Если вам нужна дополнительная помощь, объясните, о чем ваш код, ичто он использует для подключения к серверу, поэтому у нас есть общая картина.

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

2 голосов
/ 15 ноября 2018

После запуска вашего локального хоста вы получаете http://localhost:[port number]/ здесь вы нашли свой номер порта.

Затем получите свой IP-адрес из команды Command, откройте команду windows и введите ipconfig enter image description here

В моем случае IP был 192.168.10.33, поэтому мой URLбудет http://192.168.10.33:[port число] /.В Android студия использует этот URL в качестве вашего URL.И после этого установите свой URL и номер порта в ручном прокси для эмулятора.

enter image description here

...