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?
- Inicia el navegador con clase personalizada - no se puede encontrar la actividad
- Trató de arreglar androides "uso mal aconsejado o equivocado de una clase básica" fue malo
- La aplicación de Android no iniciará noClassDefFoundError
- mis imágenes gif se muestran en el emulador, pero faltan en mi teléfono inteligente
- En el modo de depuración USB de Android, ¿puedo configurar el teclado de mi computadora como dispositivo de entrada para mi teléfono móvil mientras depura el USB?
- Archivo de video Playng presente en Sistema de archivos local en Android
- Emulador no muestra mi aplicación
- Cómo tomar captura de pantalla en el emulador de Android
- ¿Cómo ejecutar la aplicación de Android en el reproductor de aplicaciones de Bluestack con Eclipse?
- incompatibilidad entre HAXM hypervisor y VirtualBox 4.3.30+
- Aplicaciones que no se ejecutan en el emulador / dispositivo de Android
- ¿Prueba el navegador Android sin el emulador?
- Emulador de Android - Problemas para crear cuentas de usuario
¿Ya solucionaste tu problema? También tengo un problema como tú. Estos son los pasos que ya he hecho:
- Desconecte el cable LAN o apague cualquier otra conexión a Internet desde su PC.
- Conecte su androide móvil a su PC usando usb.
- Activar la conexión de usb
- De nuevo a su PC. Compruebe su IP. El mío es 192.168.42.37
- Comprueba tu aplicación webservice en tu PC. Digamos http://192.168.42.37/webserviceapp
- 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
- 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 lolocalhost:61437
al puerto 8081 del dispositivo. Recuérdele para marcar la casilla de verificación "Habilitar el reenvío de puertos"
-
Pantalla de servicio en mi computadora (
localhost:61437
) -
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
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:
-
Activar la depuración USB en tu dispositivo Android
-
Ejecute su servicio web en su máquina. Mi servicio web se ejecuta en localhost, puerto 3000 en desarrollo:
http://localhost:3000/api/...
-
Ejecute
ifconfig
(Unix) oipconfig
(Windows) - Encuentre la dirección
inet
su máquina en su interfaz LAN . Mine es 10.0.0.121 para la interfazwlan0
. Externamente, es 68.43.XX.XXX, que no es la dirección que desea usar. - 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 - 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
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:
- Asegúrese de que su dispositivo Android y su máquina local están en la misma red.
- Instale SquidMan en su Mac, Linux , o cualquier otro servidor proxy.
- 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.
-
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 .
- 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.
- Localización de archivos de activos
- AlertDialog.Builder con diseño personalizado y EditText; No se puede acceder a la vista