Acceder a localhost:puerto desde el emulador de Android

Estoy corriendo un servicio web en mi máquina local que se ejecuta en localhost:54722.

Quiero llamar al servicio de una aplicación que se ejecuta en el emulador de Android.

He leído que el uso de 10.0.2.2 en la aplicación de acceso a localhost, pero parece que no funciona con el número de puerto así. Dice HttpResponseException: Bad Request.

InformationsquelleAutor Robin | 2011-07-20

22 Kommentare

  1. 371

    Usted puede tener acceso a su máquina host con la dirección IP «10.0.2.2«.

    Este ha sido diseñado de esta manera por el equipo Android. Así que tu servidor web perfectamente se pueden ejecutar en localhost y de su aplicación para Android, usted puede acceder a él a través de «http://10.0.2.2:<hostport>«.

    Si el emulador debe tener acceso a internet a través de un servidor proxy, puede configurar una costumbre HTTP proxy desde el emulador Extendido de los controles de pantalla. Con el emulador abierto, haga clic en Más Acceder a localhost:puerto desde el emulador de Android y, a continuación, haga clic en Configuración y Proxy. Desde aquí, usted puede definir su propia configuración de proxy HTTP.
    Acceder a localhost:puerto desde el emulador de Android

    • ¿Por qué debería? El error de Solicitud incorrecta significa que el servidor localhost es accesible, pero que la petición no es del todo correcto..
    • no estoy seguro, me siguen a través de, exactamente lo que estás diciendo, es relevante para siempre la solución??
    • No trabajo para mí en este momento, pero aquí está el enlace al Android de google docs y es claro que esto es lo que tienen que hacer (10.0.2.2); developer.android.com/tools/devices/emulator.html
    • obviamente, esto no aclarar nada, Robin ya está utilizando 10.0.2.2 ip en la pregunta y no está funcionando. A pesar de que su respuesta es correcta, NO ofrece una solución.
    • Yo también obtener 400: Bad request error con la misma solución.
    • puede ser problema con su solicitud de que se envíe al servidor. trate de solicitud de impresión de objetos en cliente y servidor para obtener claridad
    • Yo estaba corriendo la aplicación en localhost y no agregado en IIS, no estoy seguro por qué, pero después de la adición de servicio en IIS, es trabajo. Y ya, mis propiedades son las mismas en android y el servidor de la aplicación. Gracias
    • Esto funciona para dirigir la solicitud, pero no los últimos trabajos de inicio de sesión para multi-tenant (comodín subdominio) dependiente de aplicaciones.
    • +1 que debe ser aceptada respuesta. Para aquellos que quieren interceptar Emulador de Android de tráfico con algo parecido a una Burp proxy, esta es la información que yo estaba buscando – 10.0.2.2. Contesta a la pregunta principal; la BadRequest es probable que sea ortogonal problema.
    • Esta respuesta en sí es perfecto. La mayoría de los restantes temas como 400 son causados por el servidor web en el host. Servidores como IIS Express requieren configuración adicional, como he documentado en blog.lextudio.com/…
    • Esta respuesta redondeó la solución para mí y me puso en marcha y en funcionamiento: stackoverflow.com/a/55606008/738662
    • En la API de 28+ debe permitir explícitamente la no-https (texto claro) el tráfico en su red config demasiado. Ver mi respuesta debajo de stackoverflow.com/a/56769746/2290369

  2. 51

    Uso 10.0.2.2 por defecto AVD y 10.0.3.2 para Genymotion

    • Por qué 10.0.3.2 para Genymotion ?
    • Porque Genymotion es un emulador diferente y se optó por utilizar una ip diferente que el de google del emulador (Que raya en inútil. En serio, cuando van a hacer algo acerca de su terrible defecto del emulador?)
    • En la API de 28+ debe permitir explícitamente la no-https (texto claro) el tráfico en su red config demasiado. Ver mi respuesta debajo de stackoverflow.com/a/56769746/2290369
  3. 15

    Si usted está utilizando IIS Express, usted puede necesitar para enlazar a todos los nombres de host en lugar de simplemente `localhost’. Marque esta multa respuesta:

    https://stackoverflow.com/a/15809698/383761

    Decir IIS Express sí mismo para enlazar a todas las direcciones ip y nombres de host. En su .archivo de configuración (normalmente %userprofile%\Mis
    Documentos\IISExpress\config\applicationhost.config, o
    $(solutionDir).vs\config\applicationhost.config para Visual Studio
    2015), encontrar el sitio de unión del elemento, y agregar

    <binding protocol="http" bindingInformation="*:8080:*" />

    Asegúrese de añadir un segundo enlace en lugar de modificar uno existente o VS acaba de volver a agregar un nuevo sitio que se adjunta con una (1) También, puede que tenga que ejecutar VS como administrador.

    • No, no siempre se necesita para usar en blanco nombre de host, blog.lextudio.com/…
    • <protocolo vinculante=»http» bindingInformation=»*:15000:127.0.0.1″ /> esta fue la forma en que IIS Express gustó donde 15000 fue mi puerto y, a continuación, seleccionando 10.0.2.2:15000 en el emulador de android
  4. 13

    Me enfrentamos al mismo problema en Visual Studio ejecución de una aplicación web en IIS Express. para solucionarlo necesitas ir a las propiedades del proyecto, a continuación, haga clic en la Ficha Depurar y cambio http://localhost:%5BTU PUERTO] a http://127.0.0.1:%5BTU PUERTO] y configurar el android url http://10.0.2.2:%5BTU PUERTO]. a mí me funcionó.

    • esto, junto con las 10.0.0.2 url resuelto para mí. esta configuración parecía estar reemplazando el hosting.json enfoque explicado en otra parte.
    • Yo estoy usando django servidor de forma local en macOS y por lo general el acceso es a través de http://localhost:5000/ en tanto Cartero y el simulador de iOS. Esta solución funciona para el simulador de Android y sin necesidad de modificar mi servidor, ni a la configuración del simulador. Rápido, bonito y portable a otros equipos sin trabajo adicional.
  5. 10

    He resuelto con la instalación de la cinta Transportadora por Keyoti» en Visual Studio Professional 2015.
    Transportador de generar una dirección REMOTA (su IP) con un puerto (45455) que permiten la solicitud externa.
    Ejemplo:

    Acceder a localhost:puerto desde el emulador de Android

    Transportador permite probar aplicaciones web desde el exterior las tabletas y los teléfonos en la red o de emuladores de Android (sin http://10.0.2.2:<hostport>)

    Los pasos están en el siguiente enlace :

    https://marketplace.visualstudio.com/items?itemName=vs-publisher-1448185.ConveyorbyKeyoti

    • Lo que si no ejecuta el servidor web dentro de Visual Studio? De la omi, esta no es una respuesta a la pregunta.
    • Yo intento, pero después de algunos días más tarde la URL no funciona y no encuentro ninguna soluations.
  6. 8

    Tengo un servidor web que se ejecuta en mi localhost.

    Si abro el emulador y la quiero conectar a mi localhost estoy usando 192.168.x.x. Esto significa que usted debe usar su local de la dirección ip de la lan. Por el camino, su HttpResponseException (Bad Request) no significa que el host no es accesible.

    Algunos otros errores que conducen a esta excepción.

  7. 7

    El problema es que el emulador de Android mapas 10.0.2.2 a 127.0.0.1, no a localhost. Para configurar el servidor web para serveron 127.0.0.1:54722 y no localhost:54722. Que debe hacerlo.

  8. 4

    Después de la ejecución de su host local consigue http://localhost:[port number]/ aquí se encuentra el número de puerto.

    A continuación, obtener su dirección IP de Comando, Abra las ventanas de comandos y escriba ipconfig
    Acceder a localhost:puerto desde el emulador de Android

    En mi caso, la dirección IP se 192.168.10.33 así que mi URL será http://192.168.10.33:%5Bpuerto número]/.
    En Android, el estudio utiliza esta dirección como su dirección URL. Y después de ese conjunto de su URL y el número de puerto en el manual de proxy para el emulador.

    Acceder a localhost:puerto desde el emulador de Android

  9. 3

    que usted necesita para establecer la dirección URL como 10.0.2.2:portNr

    portNr = el puerto dado por ASP.NET Servidor de Desarrollo de mi actual servicio se está ejecutando en localhost:3229/Service.svc

    así que mi url es 10.0.2.2:3229

    había solucionado mi problema de esta manera,

    espero te sirva de ayuda…

  10. 3

    «BadRequest» es un error que suele consiguió enviar por el propio servidor, consulte rfc 2616

    10.4.1 400 Bad Request

    La solicitud no puede ser entendido por el servidor debido a un error de sintaxis. El cliente NO DEBE repetir la petición, sin modificaciones.

    Así que usted tiene un trabajo de conexión con el servidor, pero su solicitud no se ajusta a los expecet forma. No sé cómo crear la conexión, lo que los encabezados están incluidos (si hay alguna) – pero eso es lo que usted debe comprobar para.

    Si necesitas más ayuda sobre, explicar lo que su código es y lo que se utiliza para conectarse al Servidor, por lo que tenemos la imagen en grande.

    Aquí es una pregunta con el mismo Problema – la respuesta fue que el tipo de contenido que no aparece en el encabezado.

    • Usted tiene el derecho de punto, pero se fue en la dirección equivocada después. El siguiente paso debe ser analizar el servidor para saber qué tipo de peticiones que le preocupa, así como para entender por qué las solicitudes de los emuladores son respondió con 400. Un estudio de caso para IIS Express se puede encontrar aquí, blog.lextudio.com/…
  11. 2

    Desde 10.0.2.2 no es un seguro de dominio para Android, tiene que permitir a los no asegurados dominios en la configuración de la red para la API 28+ donde no las conexiones TLS son prevenidos por defecto.

    Usted puede utilizar mi siguientes configuraciones:

    Crear un nuevo archivo en main/res/xml/network_security_config.xml como:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <domain-config cleartextTrafficPermitted="true">
            <domain includeSubdomains="true">localhost</domain>
            <domain includeSubdomains="true">10.0.2.2</domain>
        </domain-config>
    </network-security-config>

    Y el punto de que en AndroidManifest.xml

    <application
    ......
    ......
    android:networkSecurityConfig="@xml/network_security_config">
  12. 1

    Me gustaría mostrar la manera en la que puedo acceder a IISExpress Api Web de mi Emulador de Android. Estoy utilizando Visual Studio 2015. Y lo que yo llamo el Emulador de Android desde el Android Studio.

    Todo lo que necesita hacer es agregar la siguiente línea a la configuración de enlace en mi applicationhost.config archivo

    <binding protocol="http" bindingInformation="*:<your-port>:" />

    Entonces que comprobar y utilizar el IP4 Dirección para acceder a mi API de Android emulador

    Requisito: debe ejecutar Visual Studio como Administrador. Este post proporciona una manera perfecta para ello.

    Para más detalles, por favor visite mi post en github

    Espero que esto ayude.

    • O instalar el VS Extensión llamada Transportador de la ventana de Extensiones. Que se abre IIS Express a las solicitudes externas sin cambiar la configuración.
    • Usted tiene otras opciones, blog.lextudio.com/… que la ejecución de VS como admin. Así que no voy a llamar a un debe.
  13. 1

    Para Laravel Homestead Los Usuarios:
    Si alguien usando Laravel con homestead puede acceder a la aplicación backend utilizando 192.168.10.10 en emulador

    Todavía no está trabajando?
    Otra buena solución es utilizar ngrok https://ngrok.com/

  14. 1

    Estoy usando Windows 10 como mi plataforma de desarrollo, el acceso a 10.0.2.2:puerto en mi emulador no está funcionando como se esperaba, y el mismo resultado para otras soluciones para este problema.

    Después de varias horas de investigación, he encontrado que si se agrega -escritura-sistema de argumento para el emulador de comandos de inicio, las cosas simplemente funcionan.

    Usted tiene que comenzar un emulador a través de línea de comandos como la siguiente:

     emulator.exe -avd <emulator_name> -writable-system

    Luego en el emulador, usted puede tener acceso a su API de servicio que se ejecuta en el host de la máquina, utilizando la dirección IP de la LAN y de unión puerto:

    http://192.168.1.2:<port>

    Espero que esto ayude a cabo.

    Acerca de iniciar el emulador desde la línea de comandos: https://developer.android.com/studio/run/emulator-commandline.

  15. 0

    localhost parecía estar funcionando bien en mi emulador en inicio y, a continuación, empecé a tener conexión rechazada la excepción
    he utilizado 127.0.2.2 desde el emulador navegador y funcionó, y cuando yo este en mi android app en el emulador de nuevo comenzó a mostrar la conexión rechazada problema.

    luego hice un ifconfig y he utilizado la ip 192.168.2.2 y funcionó perfectamente

  16. 0

    Solicitud incorrecta generalmente significa que el formato de los datos que se están enviando es incorrecta. Puede ser que no coinciden los datos de asignación . Si usted está recibiendo malas solicitud implica que son capaces de conectar con el servidor, pero la petición no se envía correctamente.

  17. 0

    Si alguien sigue buscando esto, esta es la forma en que trabajó para mí.

    Usted necesita encontrar la dirección IP de su máquina con respecto al dispositivo/emulador está conectado. Para los Emuladores de la forma es siguiendo los siguientes pasos;

    1. Ir a VM Virtual box -> seleccione los dispositivos conectados en la lista.
    2. Seleccione Ajustes ->Red> averiguar a qué red está conectado el dispositivo. Para mí fue ‘VirtualBox Host-only Adaptador Ethernet #2’.
    3. En virtualbox ir a los Archivos->Preferencias>Red>Redes Sólo-Host, y averiguar el IPv4 para la red especificada en el paso anterior. (Moviendo obtendrá la información)

    Proporcionar esta IP para acceder al localhost desde el emulador. El Puerto es el mismo que usted ha proporcionado, mientras que en ejecución/publicación de sus servicios.

    Nota #1 : asegúrese de que usted ha tomado el cuidado de los firewalls y las reglas de entrada.

    Nota #2 : por Favor revise esta IP después de reiniciar su máquina. Por alguna razón, aunque yo siempre que «Usar la siguiente IP» Host-IP Sólo se cambió.

  18. 0

    He resuelto exacto el problema es que cuando la capa de servicio es el uso de Visual Studio IIS Express. Acaba de apuntar a 10.0.2.2:el puerto no funciona. En lugar de echar a perder todo el IIS Express como se ha mencionado por otros posts, acabo de poner un proxy delante de el IIS Express. Por ejemplo, apache o nginx. El nginx.conf se verá como

     # Mobile API
     server { 
        listen       8090;
        server_name  default_server;
    
        location / {
            proxy_pass http://localhost:54722;
        }
      }

    A continuación, el android necesita los puntos para mi dirección IP 192.168.x.x:8090

  19. 0

    si está utilizando algunos 3ª parte de un paquete como nodo expresa o angular-cli usted necesita encontrar la dirección IP de su máquina, y adjuntar a su anfitrión a que IP en el servidor de inicio de configuración (en lugar de localhost). A continuación, ejecutarlo desde el emulador con la IP. Por ejemplo, he tenido que utilizar: ng serve -H 10.149.212.104 usar el angular de la cli. A continuación, desde el emulador he utilizado: http://10.149.212.104:4200

  20. 0

    1) Ejecutar el comando ipconfig en cmd

    2) se obtiene un mejor resultado como este
    Acceder a localhost:puerto desde el emulador de Android

    3) a Continuación, el uso de Direcciones IPv4 de VMWare Adaptador de Red 1 seguido por el número de puerto

    En Mi Caso su 8080, así que en lugar de usar localhost:8080

    Estoy usando 192.168.56.1:8080

    Acceder a localhost:puerto desde el emulador de Android

    Hecho…..

  21. 0

    Explicación de por qué localhost no está disponible desde los emuladores para cualquier persona que tiene acceso básico problema. Para sofisticada casos leer otras respuestas.

    Problema: Emulador ha propio red local y localhost asigna a sí mismo a emulador, pero NO su anfitrión!

    Solución:

    1. Enlazar el servidor para 0.0.0.0 para que esté disponible para el emulador de la red de
    2. Externos de la dirección IP de su ordenador portátil: ifconfig comando para Mac
    3. En Android (o Flutter app) utilice la dirección IP de la interfaz externa como: 192.168.1.10 en lugar de localhost
  22. 0

    Tuve el mismo problema cuando yo estaba tratando de conectar a mi IIS .NET Webservice desde el emulador de Android.

    1. instalar npm install -g iisexpress-proxy
    2. iisexpress-proxy 53990 to 9000 proxy IIS express puerto 9000 y puerto de acceso 9000 de emulador como "http://10.0.2.2:9000"

    la razón parece estar de forma predeterminada, IIS Express no permite conexiones de red
    https://forums.asp.net/t/2125232.aspx?Bad+Request+Invalid+Hostname+when+accessing+localhost+Web+API+or+Web+App+from+across+LAN

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea