Conectar un dispositivo Android a un servicio web en un host local

Implementé un servicio web para una aplicación de Android. El servicio web se está ejecutando en mi host local (192.168.1.2). Utilizando el emulador de Android tuve éxito al conectarme al servicio web. El intenté conectar mi dispositivo androide usando el modo de la depuración al servicio de la tela pero no trabajó. Así que mi pregunta es si es posible conectar un dispositivo Android a este servicio web que se ejecuta en mi host local (192.168.1.2) sin usar una IP real?

¿Ya solucionaste tu problema? También tengo un problema como tú. Estos son los pasos que ya he hecho:

  1. Desconecte el cable LAN o apague cualquier otra conexión a Internet desde su PC.
  2. Conecte su androide móvil a su PC usando usb.
  3. Activar la conexión de usb
  4. De nuevo a su PC. Compruebe su IP. El mío es 192.168.42.37
  5. Comprueba tu aplicación webservice en tu PC. Digamos http://192.168.42.37/webserviceapp
  6. De nuevo a tu androide móvil. Prueba esta url http://192.168.42.37/webserviceapp

Ahora puede acceder a su aplicación webservice en su PC desde su teléfono móvil.

Es una forma mucho más sencilla apoyada por google!

  • Conecta tu teléfono vía usb a la computadora y habilita la depuración usb
  • En su computadora abra el navegador Chrome y escriba exactamente esta dirección: chrome://inspect/#devices Introduzca aquí la descripción de la imagen
  • Ahora puede vincular el puerto del equipo al puerto de su dispositivo mediante el botón de reenvío de puertos . En mi computadora tengo el servicio en la dirección localhost:61437 y lo localhost:61437 al puerto 8081 del dispositivo. Recuérdele para marcar la casilla de verificación "Habilitar el reenvío de puertos"

Introduzca aquí la descripción de la imagen

  • Pantalla de servicio en mi computadora ( localhost:61437 ) Introduzca aquí la descripción de la imagen

  • Desde mi navegador móvil con el mismo servicio ( localhost:8081 ). Y eso es. También usa esta dirección de servicio en su aplicación Introduzca aquí la descripción de la imagen

Bueno, su localhost es 127.0.0.1 (o :: 1) y su IP de LAN es 192.168.1.2. Cada PC / dispositivo que está conectado bajo su LAN podría llegar a su webservice en IP 192.168.1.2

Su dispositivo Android debe estar conectado en la misma LAN a través de una conexión Wifi para poder hablar con 192.168.1.2.

Si no puedes conectar tu dispositivo Android bajo la misma LAN, por ejemplo, tienes una conexión de 3g, necesitas jugar con tu router / firewall para redirigir todo el tráfico entrante (tal vez el tráfico http) desde tu IP pública a tu IP privada 192.168.1.2)

Espero que esto ayude

Ingresaré en mi proceso, ya que nada en SO funcionó para mí. Estos son los pasos que tomé para conectar mi dispositivo físico android al servicio web que se ejecuta en mi computadora portátil (conectado al teléfono) en localhost:

  1. Activar la depuración USB en tu dispositivo Android

  2. Ejecute su servicio web en su máquina. Mi servicio web se ejecuta en localhost, puerto 3000 en desarrollo: http://localhost:3000/api/...

  3. Ejecute ifconfig (Unix) o ipconfig (Windows)

  4. Encuentre la dirección inet su máquina en su interfaz LAN . Mine es 10.0.0.121 para la interfaz wlan0 . Externamente, es 68.43.XX.XXX, que no es la dirección que desea usar.
  5. Utilice la LAN IP ya que se está conectando a su servicio en LAN, de lo contrario podría obtener un econnrefused (conexión rechazada) debido a las reglas de firewall
  6. Construye tu URL http con esa dirección IP y el puerto en el que se está ejecutando tu servicio web. Para mí, es http://10.0.0.121:3000/api/...

Cuando inicie su aplicación, debe establecer conexiones con el servicio web local en los registros, Wireshark, etc., y debería ver la actividad / datos deseados en su aplicación de Android.

Tuve los mismos problemas, investigado mucho y luego descubrió que tiene que hacer explícitamente cambios en su configuración de firewall. Tu firewall está bloqueando tu código para que se pueda acceder desde una fuente externa. Por lo tanto, todo lo que necesita hacer es, ir a la configuración de firewall, agregar el puerto 80 (en mi caso ya, estoy usando Apache http Server) para entrada y salida. Ahora, puedes probarlo en el navegador de tu teléfono http: //192.16 . . **: 80 /

Estoy de acuerdo con las otras respuestas como buenos enfoques si no desea exponer su servicio web DEV en Internet. Sin embargo, es mucho más fácil si acaba de exponer el servicio web. Hay una serie de servicios de DNS gratuitos, pero he encontrado no-ip para ser el más fácil de configurar. Lo uso para exactamente el propósito que usted pidió alrededor; Así que puedo probar con mi DEV webservice en un dispositivo real.

Si decides ir con no-ip (no tengo ninguna afiliación con esa empresa, es sólo la que he usado y estoy familiarizado con), puedes obtener una URL pública accesible gratis como http: //MyExampleWebServer.no-ip -org y no-ip tiene una utilidad que puede instalar, incluso si está detrás de una IP dinámica, siempre mantendrá la IP externa correcta asociada a esa URL. Si está trabajando desde su casa, entonces sólo tendrá que asegurarse de que el puerto reenvíe el tráfico del puerto 80 a su dirección IP interna 192.xxx (o cualquier puerto que utilice, tal vez 443 para ssl).

Es tan fácil como eso, y ahora usted puede golpear ese servicio web desde cualquier dispositivo que pueda acceder a Internet.

No he trabajado con él, pero creo que dyndns también ofrece un servicio similar.

He hecho eso en una Mac usando GasMask y Charles Proxy Server. El teléfono y el equipo deben estar en la misma red.

Digamos que la url webservice a la que desea acceder está en http://api.xyz.com , primero usa GasMask para apuntar esa url a su localhost, luego use Charles para configurar un servidor proxy. A continuación, vaya a la configuración de su teléfono, vaya a Wi-Fi, presione la red a la que está conectado, elija Modificar red e ingrese los ajustes de proxy que Charles le dio.

Esta solución es para el servidor de desarrollo GAE en Eclipse

Paso 1: Obtener el IP de LAN

Ir a su consola de comandos de Windows (presione Win + R, a continuación, escriba "cmd"). En la consola, ingrese "ipconfig". Verá una lista de visualización. En el adaptador Wi-Fi inalámbrico Wi-Fi, obtenga la dirección IPv4. Será algo 192.168.xx

LAN IP: 192.168.xx

Paso 2:

Vaya a Eclipse, abra el servidor configurado

Servidor GAE

En Propiedades de GAE Development Server -> Dirección de la interfaz local a la que vincular, ingrese la dirección IP de LAN y guárdela.

Paso 3:

Ahora puede acceder al servidor GAE

Http: //192.168.xx: 8888 /

8888 – Se refiere al número de puerto, como se menciona en el servidor de desarrollo GAE

Para tener acceso a los servicios web locales utilizando sus propios hosts de servidor en lugar de direcciones IP con puertos, siga estos pasos:

  1. Asegúrese de que su dispositivo Android y su máquina local están en la misma red.
  2. Instale SquidMan en su Mac, Linux , o cualquier otro servidor proxy.
  3. Configure el HTTPPort del servidor proxy (por ejemplo, 5555) y los clientes (por ejemplo, 192.168.0.0/24) en su propia máscara de red y ejecute el servidor proxy.
  4. Usted está utilizando los servicios web en:

    a. Un navegador web: configura la configuración del proxy de tu dispositivo Android desde Modificar redes WiFi.

    segundo. Aplicación de Android: configure el proxy para su cliente HTTP. Si está utilizando Volley, marque esto: Volley Behind a Proxy server .

  5. Ahora puede conectarse a él utilizando cualquier URL que esté usando en su host para conectarse al servicio web (por ejemplo, http://my-local-machine.com )

Sugerencia: Si tiene códigos de respuesta 4xx, asegúrese de que su servicio web permite conexiones desde otros hosts no locales.

En mi caso, nada de estas soluciones funciona porque el cortafuegos de Windows lo bloquea, pero poner una regla en el firewall no tiene efecto.

El problema en mi caso es que mi computadora portátil está conectada con Wifi y Windows tenía la conexión Wifi como una red pública. Debo cambiar la conexión de red a la red privada. http://www.comofuncionatodo.net/tecnologia/informatica/como-cambiar-de-red-publica-a-red-privada-en-windows-10/

Si se está refiriendo a su localhost en el sistema desde el emulador de Android, entonces usted tiene que usar http://10.0.2.2:8080/ Debido a que el emulador de Android se ejecuta dentro de una máquina virtual (QEMU), por lo tanto aquí 127.0.0.1 o localhost será emulador propio La dirección de bucle invertido.

  • Emulador de Android no empieza en Ubuntu
  • Aplicaciones bajo proxy que no funcionan en emulador aunque Internet está funcionando
  • ¿Cómo puedo crear un AVD para la prueba de tabletas?
  • ¿Cómo puedo cargar una aplicación de Google Play en el emulador de Android?
  • Excepción de host desconocido de Java
  • Emulador en Android Studio no se inicia
  • Error del emulador de Android: falta del archivo del kernel
  • Enviar formulario html de forma programática en android
  • Cómo crear el snapshots.img desde la consola?
  • ¿Qué imágenes del sistema debo instalar para Android L Developement?
  • Explicación detallada para el perfil de "adb shell dumpsys meminfo mi-app-name"?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.