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

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

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

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

Ответы [ 21 ]

1 голос
/ 24 февраля 2017

Я хотел бы показать вам, как я могу получить доступ к IISExpress Web API через мой эмулятор Android.Я использую Visual Studio 2015. И я вызываю эмулятор Android из Android Studio.

Все, что мне нужно сделать, это добавить следующую строку в конфигурацию привязки в моем applicationhost.config file

<binding protocol="http" bindingInformation="*:<your-port>:" />

Затем я проверяю и использую IP4-адрес для доступа к моему API из эмулятора Android

Требование: необходимо запустить VisualСтудия как администратор. Этот пост дает идеальный способ сделать это.

Для более подробной информации, пожалуйста, посетите мой пост на github

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

1 голос
/ 11 января 2018

Для пользователей Laravel Homestead: Если кто-либо использует Laravel вместе с hometead, вы можете получить доступ к бэкенду приложения, используя 192.168.10.10 в эмуляторе

Все еще не работает?Другим хорошим решением является использование ngrok https://ngrok.com/

0 голосов
/ 10 мая 2019

Вы можете найти нужный IP-адрес в диспетчере задач Windows (нажав Ctrl + Alt + Del), просмотрев его на вкладке «Производительность».,.

0 голосов
/ 17 января 2014

localhost работал нормально в моем эмуляторе при запуске, а затем я начал получать отказ в соединении исключение я использовал 127.0.2.2 из браузера эмулятора, и он работал, и когда я использовал это в своем приложении для Android в эмуляторе, он снова начал показывать проблему отказа соединения.

тогда я сделал ifconfig и использовал ip 192.168.2.2, и он отлично работал

0 голосов
/ 13 апреля 2018

1) Запустите команду ipconfig в cmd

2) Вы получите такой результат enter image description here

3) Затем используйте IPv4-адрес сетевого адаптера VMWare 1затем номер порта

В моем случае это 8080, поэтому вместо localhost: 8080

я использую 192.168.56.1:8080

enter image description here

Готово .....

0 голосов
/ 06 сентября 2016

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

0 голосов
/ 17 января 2017

Если кто-то все еще ищет это, вот как это сработало для меня.

Вам необходимо найти IP-адрес вашей машины относительно устройства / эмулятора, к которому вы подключены. Для эмуляторов можно выполнить следующие шаги:

  1. Зайдите в виртуальный ящик ВМ -> выберите подключенное устройство в списке.
  2. Выберите Настройки -> Сеть -> Узнайте, к какой сети подключено устройство. Для меня это был «VirtualBox Host-Only Ethernet Adapter # 2».
  3. В виртуальной коробке перейдите в Файлы-> Настройки-> Сеть-> Хост-сети и найдите IPv4 для сети, указанной в шаге выше. (При наведении мыши вы получите информацию)

Укажите этот IP-адрес для доступа к локальному хосту из эмулятора. Порт совпадает с тем, который вы указали при запуске / публикации ваших служб.

Примечание # 1: Убедитесь, что вы позаботились о брандмауэрах и правилах входящего трафика.

Примечание № 2: Пожалуйста, проверьте этот IP после перезагрузки вашего компьютера. По какой-то причине, даже если я предоставил «Использовать следующий IP-адрес», IP-адрес только для хоста изменился.

0 голосов
/ 16 августа 2017

если вы используете какой-либо сторонний пакет, такой как node express или angular-cli, вам нужно будет найти IP-адрес вашего компьютера и подключить хост к этому IP-адресу в конфигурации запуска сервера (вместо localhost).Затем запустите его из эмулятора, используя IP.Например, мне пришлось использовать: ng serve -H 10.149.212.104, чтобы использовать angular-cli.Затем из эмулятора я использовал: http://10.149.212.104:4200

0 голосов
/ 26 июня 2019

Так как 10.0.2.2 не является безопасным доменом для Android, вы должны разрешить незащищенные домены в конфигурации вашей сети для API 28+, где не-TLS-соединения по умолчанию запрещены.

Вы можете использовать мойследующие конфигурации:

Создайте новый файл в main / res / xml / network_security_config.xml как:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">localhost</domain>
        <domain includeSubdomains="true">10.0.2.2</domain>
    </domain-config>
</network-security-config>

и укажите его в AndroidManifest.xml

<application
......
......
android:networkSecurityConfig="@xml/network_security_config">
0 голосов
/ 04 июля 2019

Я использую Windows 10 в качестве своей платформы разработки, доступ к 10.0.2.2:port в моем эмуляторе работает не так, как ожидалось, и тот же результат для других решений в этом вопросе.

После нескольких часов копания я обнаружил, что если вы добавите аргумент -writable-system в команду запуска эмулятора, все будет работать.

Вы должны запустить эмулятор из командной строки, как показано ниже:

 emulator.exe -avd <emulator_name> -writable-system

Затем в эмуляторе вы можете получить доступ к службе API, запущенной на хост-компьютере, используя IP-адрес локальной сети и порт привязки:

http://192.168.1.2:<port>

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

О запуске эмулятора из командной строки: https://developer.android.com/studio/run/emulator-commandline.

...