Accès à localhost: port depuis l'émulateur Android



Answers

Utilisez 10.0.2.2 pour AVD par défaut et 10.0.3.2 pour Genymotion

Question

localhost:54722 un service Web sur ma machine locale qui s'exécute sur localhost:54722 .

Je souhaite appeler le service à partir d'une application fonctionnant dans l'émulateur Android.

J'ai lu que l'utilisation de 10.0.2.2 dans l'application permettrait d'accéder à localhost, mais cela ne semble pas fonctionner avec le numéro de port. Il dit HttpResponseException: Bad Request .




Une mauvaise demande signifie généralement que le format des données que vous envoyez est incorrect. Peut être un mappage de données incompatibles. Si vous recevez une mauvaise demande, cela signifie que vous êtes en mesure de vous connecter au serveur, mais que la demande n'est pas envoyée correctement.




Pour les utilisateurs de Laravel Homestead: Si quelqu'un utilise Laravel avec la propriété, vous pouvez accéder au backend de l'application en utilisant 192.168.10.10 dans l'émulateur




Je voudrais vous montrer comment accéder aux API Web IISExpress depuis mon émulateur Android. J'utilise Visual Studio 2015. Et j'appelle l'émulateur Android d'Android Studio.

Tout ce que je dois faire est d'ajouter la ligne suivante à la configuration de liaison dans mon fichier applicationhost.config

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

Ensuite, je vérifie et utilise l'adresse IP4 pour accéder à mon API à partir de l'émulateur Android

Condition: vous devez exécuter Visual Studio en tant qu'administrateur. Ce post donne un moyen parfait de le faire.

Pour plus de détails, s'il vous plaît visitez mon post sur github

J'espère que cela t'aides.




"BadRequest" est une erreur qui est généralement envoyée par le serveur lui-même, voir rfc 2616

10.4.1 400 Mauvaise demande

La requête n'a pas pu être comprise par le serveur en raison d'une syntaxe mal formée. Le client NE DEVRAIT PAS répéter la demande sans modifications.

Vous avez donc une connexion de travail avec le serveur, mais votre requête ne correspond pas au formulaire expecet. Je ne sais pas comment vous créez la connexion, quels en-têtes sont inclus (s'il y en a) - mais c'est ce que vous devriez vérifier.

Si vous avez besoin de plus d'aide, expliquez ce qu'est votre code et ce qu'il utilise pour vous connecter au serveur, nous avons donc une vue d'ensemble.

Voici une question avec le même problème - la réponse était que le type de contenu n'était pas défini dans l'en-tête.




J'ai résolu le problème lorsque la couche de service utilise Visual Studio IIS Express. Il suffit de pointer vers 10.0.2.2:port ne fonctionnera pas. Au lieu de déconner le IIS Express comme mentionné par d'autres messages, je viens de mettre un proxy en face de l'IIS Express. Par exemple, apache ou nginx. Le fichier nginx.conf ressemblera à

 # Mobile API
 server { 
    listen       8090;
    server_name  default_server;

    location / {
        proxy_pass http://localhost:54722;
    }
  }

Ensuite, l'android doit pointer vers mon adresse IP comme 192.168.xx: 8090







J'ai un serveur web fonctionnant sur mon localhost.

Si j'ouvre l'émulateur et que je veux me connecter à mon hôte local, j'utilise 192.168.xx Cela signifie que vous devez utiliser votre adresse IP locale. Par ailleurs, votre HttpResponseException (Bad Request) ne signifie pas que l'hôte n'est pas accessible.

D'autres erreurs conduisent à cette exception.




Links