2014-10-06 5 views
0

Я попытался настроить простой веб-сервер на Android с помощью демонстрационного приложения nanohttpd без изменений. Устройства Android, которые я использую, работают под управлением Android 4.0.3.Android-сервер nanohttpd - не удается подключиться к браузеру на одном устройстве

Я могу получить доступ к веб-серверу с других устройств, но я не могу подключиться к веб-серверу из браузера (Firefox, Chrome и собственного Android-браузера) на том же устройстве Android, что и веб-сервер. Бег.

Я пробовал различные адреса и комбинации портов без успеха (localhost, 127.0.0.1, 10.0.0.2, фактический назначенный IP-адрес, порт 8080, 8082). Я также попытался связать приложение nanohttpd напрямую с 127.0.0.1, но без успеха. Я подтвердил, что могу «пинговать» адреса, используя терминальное приложение на устройстве Android, поэтому похоже, что сетевое подключение прекрасное.

Есть ли ограничение на Android, которое не позволит браузеру подключиться к экземпляру локального веб-сервера, и если да, есть ли параметр конфигурации или разрешения, которые необходимо изменить, чтобы это работало?

+0

Странная история. Это должно сработать. – greenapps

ответ

1

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

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

Робин, большое вам спасибо за ответ сегодня.

10/08/14 - Обновление: после внедрения веб-сервера nanohttpd в службе Android все работает так, как я изначально планировал. Я использовал пример, найденный here, чтобы определить услугу.

KenSt

+0

Нет проблем! Вы можете просто попытаться не отвязать свой onPause, посмотрите, работает ли это ...Я не видел ваш код, поэтому я не знаю, когда вы приостанавливаете работу сервера, но помните жизненный цикл своей деятельности. Также вы можете отметить свой собственный ответ как принятый. –

+0

Ты - Спаситель Жизни –

0

1) Вам необходимо предоставить разрешение на интернет в AndroidManifest.xml.

<uses-permission android:name="android.permission.INTERNET" /> 

2) Также порт 80 не будет доступен без корня.

Для получения дополнительной информации см. this question.

3) Отключите VPN или прокси-приложение или сжатие данных на устройстве

+0

Благодарим вас за ответ. Да, я предоставил разрешение INTERNET в манифесте, и я использую порт 8080 по умолчанию. Все работает отлично, когда я получаю доступ к веб-серверу с другого устройства, например, моего настольного ПК. Я просто не могу получить доступ к веб-серверу с того же устройства. – KenSt

+0

Что вы получаете, когда пытаетесь с устройства? 404? Также вы можете разместить свой код, пожалуйста? –

+0

Я использую код примера без изменений отсюда, прежде чем я расширю его своей собственной реализацией: https://github.com/NanoHttpd/nanohttpd/blob/master/samples/src/main/java/fi/iki/elonen /HelloServer.java. TCP-соединение с веб-сервером никогда не устанавливается, и я получаю сообщение «Невозможно подключиться» в браузере. – KenSt