Как подключиться к моему веб-серверу http: // localhost из эмулятора Android в Eclipse


485

Что я могу сделать в Android-эмуляторе Eclipse, чтобы подключить его к странице моего локального веб-сервера на http://localhostили http://127.0.0.1?

Я пробовал это сделать, но эмулятор по-прежнему принимает мой запрос, как поиск в Google для localhost или, что еще хуже, он говорит, что не нашел страницу, когда мой веб-сервер нормально работает.


Этот вопрос о Android Emulator и имеет решение , применимое к этому случаю только . Если вы столкнулись с этой проблемой при использовании физического устройства Android , см. Вместо этого stackoverflow.com/questions/4779963/…
Крис Стрэттон,

Ответы:


819

Локальный хост относится к устройству, на котором выполняется код, в данном случае к эмулятору.

Если вы хотите обратиться к компьютеру, на котором работает симулятор Android, используйте вместо этого IP-адрес 10.0.2.2 .

введите описание изображения здесь

Вы можете прочитать больше здесь .


12
зачем ссылаться на другой вопрос? просто добавьте эмулятор
Марвин Эмиль Брач

Спасибо за указание на ссылку. Я думаю, это не было там, когда ответ был опубликован.
Первоначальный Паппачан

1
@primpap: Могу ли я использовать имя машины вместо IP-адреса?
KJEjava48

@primpap это не работает с мобильной отладкой. Есть еще что-нибудь? Или я где-то делаю ошибку, потому что 10.0.2.2 работает на эмуляторе, но не работает, когда я подключаю мобильный для отладки по USB. ?
Джавад Зеб

5
Это решение работает только на эмуляторах , как указано в конкретном вопросе здесь. Те, кто выполняет отладку на физическом устройстве Android, должны будут использовать фактический IP-адрес или имя сервера, они не могут использовать этот специальный псевдоним только для эмулятора. Этот ответ хорош - но читатели должны быть осторожны, чтобы их ситуация была применима .
Крис Страттон

156

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


Так мы просто добавим 10.0.3.2в наш файл хоста?
ayjay

29

Я успешно использовал 10.0.2.2 на своей домашней машине, но на работе он не работал. После нескольких часов дурачения я создал новый экземпляр эмулятора с помощью диспетчера виртуальных устройств Android (AVD), и, наконец, 10.0.2.2 заработал.

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


4
К сожалению, это не работает для меня даже после создания нового экземпляра AVD. Что ты предлагаешь? Переустановить все?
Владо Панджич

23

Попробуйте, http://10.0.2.2:8080/где 8080ваш номер порта. Это сработало отлично. Если вы просто попробуете, 10.0.2.2это не сработает. Вам нужно добавить номер порта к нему. Также, если Microsoft IIS был установлен, попробуйте отключить эту функцию с панели управления (при использовании Windows OS), а затем попробуйте, как указано выше.


2
Что делать, если страницы размещены на IIS?
сок

@Marimba просто выясни, какой порт обслуживает твой IIS-сервер, а затем получи
StoneLam

это законченная строка, и единственная работала на моем эмуляторе Android 8.1
CodeToLife

10

согласно документации:

10.0.2.2 - Специальный псевдоним интерфейса обратной связи вашего хоста (т. Е. 127.0.0.1 на вашей машине разработки)

проверьте сеть эмулятора для получения дополнительной информации об эмуляции сети.



3

Мне нужно было выяснить системный IP-адрес хоста для эмулятора "Nox App Player". Вот как я это понял 172.17.100.2.

  1. Установлен эмулятор терминала Android из магазина приложений
  2. Выполните ip link showкоманду, чтобы показать все сетевые интерфейсы. Особый интерес вызвал интерфейс eth1
  3. ifconfig eth1Команда выдачи , показывает net как172.17.100.15/255.255.255.0
  4. Начните пинговать адреса, начиная с 172.17.100.1, получил "172.17.100.2". Не уверен, что брандмауэр будет мешать, но в моем случае этого не произошло

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


1

Если вы находитесь в Windows, вы можете зайти в систему simbol и написать ipconfig и проверить, какой ip назначен вашей машине.


Это не обязательно при отладке с эмулятора, так как вы можете использовать специальный псевдоним для интерфейса обратной связи хоста, упомянутый в других ответах. Однако, если отладка выполняется с физического устройства Android, тогда да, вам нужно определить фактический адрес вашего тестового сервера и использовать его.
Крис Страттон

1

Вы можете использовать localhost:8000подключение к локальному узлу вашей машины, выполняя приведенную ниже команду каждый раз, когда запускаете эмулятор (проверено только на Mac):

adb reverse tcp:8000 tcp:8000

Просто поместите его в терминал Android Studio.

По сути, он настраивает обратный прокси-сервер, на котором работающий на вашем телефоне http-сервер принимает подключения через порт и подключает их к вашему компьютеру или наоборот.


0

Я не знаю, может быть, эта тема уже решена, но когда я недавно попробовал сделать это на Windows-машине, я столкнулся с множеством трудностей. Поэтому мое решение было действительно простым. Я скачал этот софт http://www.lenzg.net/rinetd/rinetd.html, следуя их инструкциям о том, как сделать переадресацию портов, а затем успешно подключил мое android-устройство к проекту asp.net localhost и остановился на моем критическом уровне.

мой файл rinetd.conf:

10.1.1.20 1234 127.0.0.1 1234
10.1.1.20 82 127.0.0.1 82

Где 10.1.1.20 - мой localhost ip, 82 и 1234 - мои порты. Также я создал специальный файл bath для вашего удобства yournameofbathfile.bat, поместите этот файл в папку rined. Мой банный файл:

rinetd.exe -c rinetd.conf

После запуска этого программного обеспечения, запустите сервер aps.net и попробуйте получить доступ с устройства Android или любого устройства в вашей локальной сети (например, Computer ABC запускает замазку), и вы увидите, что все работает. Не нужно идти к настройке роутера или делать какие-то другие сложные вещи. Я надеюсь, что это поможет вам. Наслаждаться.


-1

Другой обходной путь - получить бесплатный домен от no-ip.org и указать его на свой локальный IP-адрес. Тогда вместо использования http://localhost/yourwebserviceвы можете попробоватьhttp://yourdomain.no-ip.org/yourwebservice

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.