Я реализовал веб-сервис для приложения для Android. Веб-служба работает на моем локальном хосте (192.168.1.2). С помощью эмулятора Android мне удалось подключиться к веб-сервису. Я попытался подключить свое устройство Android в режиме отладки к веб-сервису, но это не сработало. Поэтому мой вопрос в том, можно ли подключить Android-устройство к этой веб-службе, которая работает на моем локальном хосте (192.168.1.2), без использования реального IP-адреса?
Подключение устройства Android к веб-службе на локальном хосте
Ответ 1
Вы уже решили свою проблему? У меня тоже такая проблема, как вы. Это шаги, которые я уже сделал:
- отключите кабель lan или выключите любое другое интернет-соединение с вашего компьютера.
- подключите свой Android-плеер к компьютеру с помощью usb.
- включить usb tethering
- вернуться на ваш компьютер. проверьте свой ip. мой - 192.168.42.37
- проверьте ваше приложение webservice на вашем компьютере. скажем http://192.168.42.37/webserviceapp
- Вернемся к мобильному телефону Android. попробуйте этот url http://192.168.42.37/webserviceapp
Теперь вы можете получить доступ к своему веб-сервису на своем ПК с вашего мобильного телефона.
Ответ 2
Это гораздо более простой способ, поддерживаемый google!
- Подключите телефон через USB к компьютеру и включите отладку usb
- На вашем компьютере откройте браузер Chrome и введите именно этот адрес:
chrome://inspect/#devices
- Теперь вы можете связать свой порт компьютера с портом вашего устройства с помощью кнопки переадресации портов. На моем компьютере у меня есть сервис по адресу
localhost:61437
, и я просто связал его с портом устройства 8081. Помните, чтобы установить флажок "Включить переадресацию портов".
Ответ 3
Ну, ваш localhost равен 127.0.0.1 (или:: 1), а ваш IP-адрес локальной сети - 192.168.1.2. Каждый компьютер/устройство, подключенное под вашей локальной сетью, может достигнуть вашего веб-сервиса по IP 192.168.1.2.
Ваше Android-устройство должно быть подключено таким же ЛВС через Wifi-соединение, чтобы он мог разговаривать с 192.168.1.2.
Если вы не можете подключить свое Android-устройство под одной и той же локальной сетью, например, у вас есть только 3-граммовое соединение, которое вам нужно играть с вашим маршрутизатором/брандмауэром, чтобы перенаправить весь входящий трафик (возможно, только трафик http) из вашего общедоступного ip-адреса private ip (192.168.1.2)
Надеемся на эту помощь
Ответ 4
Я заброшу свой процесс, так как ничто на SO не помогло мне. Вот шаги, которые я предпринял для подключения моего физического устройства Android к веб-службе, работающей на моем ноутбуке (подключенном к телефону) на localhost:
-
Включить отладку USB на устройстве Android
-
Запустите веб-службу на своем компьютере. Мой веб-сервис работает на localhost, порт 3000 в разработке:
http://localhost:3000/api/...
-
Запустите
ifconfig
(Unix) илиipconfig
(Windows) - Найдите свой адрес
inet
на вашем LAN. Mine 10.0.0.121 для интерфейсаwlan0
. Внешне это 68.43.XX.XXX, который не адрес, который вы хотите использовать. - Используйте IP-адрес LAN, поскольку вы подключаетесь к своей службе в локальной сети, иначе вы можете получить сообщение об ошибке
econnrefused
(соединение отказано) из-за правил брандмауэра. - Создайте свой URL-адрес http с этим IP-адресом и порт, на котором работает ваш веб-сервис. Для меня это
http://10.0.0.121:3000/api/...
Когда вы запустите приложение, вы должны подключиться к своей локальной веб-службе в журналах, Wireshark и т.д., и вы должны увидеть нужную активность/данные в своем приложении Android.
Ответ 5
У меня были те же проблемы, многие исследовали, а затем выяснили, что вы должны явно вносить изменения в настройки брандмауэра. Ваш брандмауэр блокирует доступ к вашему коду из внешнего источника. Итак, все, что вам нужно сделать, это перейти к настройкам брандмауэра, добавить порт 80 (в моем случае с тех пор, как я использую Apache http Server) для входящего и исходящего. Теперь вы можете протестировать его в своем браузере телефона http://192.16.. **: 80/
Ответ 6
Я согласен с другими ответами как с хорошим подходом, если вы не хотите раскрывать свой веб-сервис DEV в Интернете. Однако это намного проще, если вы просто разоблачите веб-сервис. Там есть ряд бесплатных DNS-сервисов, но я нашел no-ip проще всего настроить. Я использую его именно для цели, о которой вы просили; поэтому я могу протестировать свой веб-сервис DEV на реальном устройстве.
Если вы решите пойти без no-ip (у меня нет связи с этой компанией, это только тот, который я использовал и знакомый), вы можете получить бесплатный общедоступный URL, например http://MyExampleWebServer.no-ip-org, и no-ip имеет утилиту, которую вы можете установить, даже если вы находитесь за динамическим IP-адресом, она всегда будет поддерживать правильный внешний IP-адрес, связанный с этим URL-адресом, Если вы работаете из своего дома, вам просто нужно убедиться, что вы переносите трафик с порта 80 на свой внутренний адрес 192.x.x.x(или любой другой порт, который вы используете, может быть, 443 для ssl).
Это так просто, и теперь вы можете ударить этот веб-сервис с любого устройства, которое может получить доступ к Интернету.
Я не работал с ним, но я считаю, что dyndns также предлагает аналогичную услугу.
Ответ 7
Я сделал это на Mac, используя GasMask и Charles Proxy Server. Ваш телефон и компьютер должны находиться в одной сети.
скажем, что URL-адрес веб-сервиса, который вы хотите получить, находится в http://api.xyz.com, вы сначала используете GasMask, чтобы указать этот URL-адрес на свой локальный хост, затем используйте Чарльз настроил прокси-сервер. Затем вы переходите к настройкам на своем телефоне, заходите в Wi-Fi, долго нажимаете на сеть, к которой вы подключены, выберите "Изменить сеть" и введите настройки прокси, которые дал вам Чарльз.
Ответ 8
Это решение для сервера разработки GAE в Eclipse
Шаг 1: Получите IP-адрес локальной сети
Перейдите на консоль Windows Command (нажмите Win + R, затем введите "cmd" ). В консоли введите "ipconfig". Вы увидите список дисплеев. Под адаптером беспроводной локальной сети Wi-Fi получите адрес IPv4. Это будет что-то 192.168.x.x
LAN IP: 192.168.x.x
Шаг 2:
Перейдите в Eclipse, откройте настроенный сервер
В разделе "Свойства сервера разработки GAE" → Адрес локального интерфейса для привязки, введите IP-адрес LAN и сохраните.
Шаг 3:
Теперь вы можете получить доступ к серверу GAE с помощью
8888 - указывает на номер порта, как указано в сервере разработки GAE
Ответ 9
Чтобы получить доступ к локальным веб-службам, используя собственные серверные узлы, а не IP-адреса с портами, выполните следующие действия:
- Убедитесь, что ваше устройство Android и локальный компьютер находятся в одной сети.
- Установите SquidMan на вашем Mac, Linux или любого другого прокси-сервера.
- Настройте прокси-сервер HTTPPort (например, 5555) и клиенты (например, 192.168.0.0/24) на свою собственную маску сети и запустите прокси-сервер.
-
Вы используете веб-службы в:
а. Веб-браузер. Настройте параметры прокси-сервера вашего устройства Android в сетях Modify WiFi.
б. Приложение для Android: Настройте прокси для своего HTTP-клиента. Если вы используете Volley, проверьте это: Volley Behind proxy server.
- Теперь вы можете подключиться к нему, используя любой URL-адрес, который вы используете на своем хосте, для подключения к веб-службе (например, http://my-local-machine.com)
Подсказка: если вы получили коды ответа 4xx, убедитесь, что ваш веб-сервис разрешает соединения с другими нелокальными узлами.
Ответ 10
В моем случае ничего из этих решений не работает, потому что брандмауэр Windows блокирует его, но включение правила в брандмауэр не влияет.
Проблема в моем случае заключается в том, что мой ноутбук подключен к Wi-Fi, а Windows имеет Wi-Fi-соединение, например, в сети общего пользования. Я должен изменить сетевое подключение к частной сети. http://www.comofuncionatodo.net/tecnologia/informatica/como-cambiar-de-red-publica-a-red-privada-en-windows-10/
Ответ 11
Если вы ссылаетесь на свой локальный хост в своей системе с эмулятора Android, вы должны использовать http://10.0.2.2:8080/ Поскольку эмулятор Android работает внутри виртуальной машины (QEMU), поэтому здесь 127.0.0.1 или localhost будет собственным адресом обратной связи эмулятора.