Получение Android для общения с Apache на локальном хосте
Приложение для Android работает на php-сервере. У меня Apache/php работает локально на сервере WAMP. Я запускаю Windows 7. Если я перейду на локальный хост на Windows 7, на сайте показывается, но по телефону он будет искать локальный хост на текущей ОС Android, поэтому ни один сайт не показывает.
Мне удалось обойти это, открыв мою конфигурацию apache в Интернете, а затем используя мой внешний IP-адрес, это раздражает, потому что я на динамическом IP и иногда не имею интернет (+ не защищен).
Как сделать HTTP-запрос с android доступ к localhost (или другому псевдониму в файле hosts)?
Ответы
Ответ 1
Джон прав, что в общем случае вы не можете подключить устройство Android к компьютеру через USB-кабель (главное отличие от эмулятора Android, когда такое соединение выполняется с помощью псевдонима). Однако есть некоторые вещи, которые вы можете сделать:
-
Вы можете подключить как компьютер, так и телефон к защищенному Wi-Fi-маршрутизатору. Ему даже не нужно иметь восходящее интернет-соединение.
-
По-видимому, если у вас есть опция froyo и usb tethering, включение этого будет в качестве побочного эффекта для установления сети через USB, что позволит телефону связаться с ПК (просто посмотрите, где будет проходить интернет-трафик)
-
Если вам нужно что-то на ПК, чтобы открыть подключение к чему-то, прослушивающему телефон, вы можете использовать порт adb вперед. Но похоже, что вы хотите, чтобы клиент на ПК обратился к серверу по телефону, чтобы он не работал.
Ответ 2
В общем, вы не можете.
Что вы можете сделать, если компьютер находится в той же беспроводной сети, что и устройство Android, подключается к компьютеру с внутренним IP-адресом. Например, на типичном домашнем wifi-маршрутизаторе маршрутизатор находится в 192.168.1.1
, а подключенные к нему устройства - 192.168.1.x
. Так что, если ваш ПК с Windows 7 находится в 192.168.1.5
, вы должны иметь доступ к этому с вашего устройства Android просто...
Ответ 3
Действительно, для локальной сети вы должны использовать свой локальный ip-адрес (например, 192.168.1.x).
Не забудьте открыть порт (в основном 80) в настройках брандмауэра Windows.
Ответ 4
Каждый экземпляр эмулятора работает за виртуальным сервисом маршрутизатора/брандмауэра, который изолирует его от сетевых интерфейсов и настроек вашего компьютера разработки и из Интернета. Эмулируемое устройство не может видеть вашу машину разработки или другие экземпляры эмулятора в сети. Вместо этого он видит только, что он подключен через Ethernet к маршрутизатору/брандмауэру.
Виртуальный маршрутизатор для каждого экземпляра управляет сетевым адресным пространством 10.0.2/24 - все адреса, управляемые маршрутизатором, представлены в виде 10.0.2., где - номер. Адреса в этом пространстве предварительно распределяются эмулятором/маршрутизатором следующим образом:
Описание сетевого адреса
10.0.2.1 Адрес маршрутизатора/шлюза
10.0.2.2 Специальный псевдоним вашего интерфейса loop loopback (т.е. 127.0.0.1 на вашей машине разработки)
10.0.2.3 Первый DNS-сервер
10.0.2.4/10.0.2.5/10.0.2.6 Дополнительный второй, третий и четвертый DNS-сервер (если есть)
10.0.2.15 Эмулируемые устройства имеют собственный интерфейс сети /Ethernet
127.0.0.1 Эмулированные устройства имеют собственный интерфейс обратной петли
Также обратите внимание, что адрес 127.0.0.1 на вашей машине разработки соответствует интерфейсу обратной связи с эмуляторами. Если вы хотите получить доступ к службам, запущенным на вашем интерфейсе loopback вашего разработчика (a.k.a. 127.0.0.1 на вашем компьютере), вместо этого вы должны использовать специальный адрес 10.0.2.2.
Подробнее см. http://red23rockets.com/?p=28
Ответ 5
Откройте терминал и введите для Unix (Ubuntu): ifconfig или ipconfig для Windows, и вы увидите:
- eth1 Link encap: Ethernet HWaddr 00: 23: 8e: af: 61: 76
- inet addr: 192.168.1.6
Ваш номер может отличаться от этого.
- web = (WebView) findViewById (R.id.webview01);
- web.setWebViewClient(новый myWebClient());
- web.loadUrl( "[http://192.168.1.6]" );//remove []