web-dev-qa-db-fra.com

Connecter un appareil Android à un service Web sur un hôte local

J'ai mis en place un service Web pour une application Android. Le service Web est exécuté sur mon hôte local (192.168.1.2). En utilisant l'émulateur Android, j'ai réussi à me connecter au service Web. J'ai essayé de connecter mon appareil Android en mode de débogage au service Web, mais cela n'a pas fonctionné. Ma question est donc la suivante: est-il possible de connecter un appareil Android à ce service Web exécuté sur mon hôte local (192.168.1.2) sans utiliser une adresse IP réelle? 

47
adadad

Avez-vous déjà résolu votre problème? J'ai aussi un problème comme toi. Ce sont les étapes que j'ai déjà faites:

  1. débranchez le câble LAN ou désactivez toute autre connexion Internet de votre ordinateur.
  2. connectez votre mobile Android à votre PC via USB.
  3. activer le partage de connexion USB
  4. retour à votre pc. vérifiez votre ip. le mien est 192.168.42.37
  5. vérifiez votre application WebService dans votre PC. disons http://192.168.42.37/webserviceapp
  6. retour sur votre mobile Android. essayez cette url http://192.168.42.37/webserviceapp

Vous pouvez maintenant accéder à votre application Webservice sur votre ordinateur à partir de votre téléphone portable.

33
Zulkifli fasilkom01

C'est beaucoup plus simple supporté par google! 

  • Connectez votre téléphone via USB à un ordinateur et activez le débogage USB
  • Sur votre ordinateur, ouvrez le navigateur Chrome et tapez exactement cette adresse: chrome://inspect/#devices enter image description here
  • Maintenant, vous pouvez relier le port de votre ordinateur au port de votre périphérique en redirection de port bouton. Sur mon ordinateur, j'ai un service sur l'adresse localhost:61437 et je viens de le lier au port 8081 du périphérique. Rappelez-vous de cocher la case 'Activer le transfert de port'

 enter image description here

  • écran du service sur mon ordinateur (localhost:61437)  enter image description here

  • l'écran de mon navigateur mobile avec le même service (localhost:8081). Et c'est tout. Vous utilisez également cette adresse de service dans votre application  enter image description here

29
Michał Jarzyna

Eh bien votre hôte local est 127.0.0.1 (ou :: 1) et votre IP LAN est 192.168.1.2. Chaque ordinateur/périphérique connecté sous votre réseau local peut accéder à votre service Web sur IP 192.168.1.2

Votre appareil Android doit donc être connecté au même réseau local, par exemple via une connexion Wifi, pour pouvoir dialoguer avec 192.168.1.2.

Si vous ne pouvez pas connecter votre appareil Android au même réseau local, par exemple si vous n’avez qu’une connexion 3G, vous devez jouer avec votre routeur/pare-feu pour rediriger tout le trafic entrant (peut-être simplement le trafic http) de votre adresse IP publique vers votre adresse IP privée ( 192.168.1.2)

J'espère que cette aide

13

Je vais ajouter mon processus, car rien sur SO ne fonctionne pour moi. Voici les étapes que j'ai suivies pour connecter mon appareil physique Android au service Web exécuté sur mon ordinateur portable (connecté au téléphone) sur localhost:

  1. Activer le débogage USB sur votre appareil Android

  2. Exécutez votre service Web sur votre ordinateur. Mon service Web fonctionne sur localhost, port 3000 en développement: http://localhost:3000/api/...

  3. Exécuter ifconfig (Unix) ou ipconfig (Windows)

  4. Recherchez l'adresse inet de votre ordinateur sur votre interface LAN. Le mien est 10.0.0.121 pour l'interface wlan0. En externe, il s'agit de 68.43.XX.XXX, qui est non l'adresse que vous souhaitez utiliser.
  5. Utilisez l'adresse IP LAN puisque vous vous connectez à votre service sur un réseau local, sinon vous pourriez obtenir une erreur econnrefused (connexion refusée) en raison de règles de pare-feu
  6. Construisez votre URL http avec cette adresse IP et le port sur lequel votre service Web est exécuté. Pour moi, c'est http://10.0.0.121:3000/api/...

Lorsque vous lancez votre application, vous devez vous connecter à votre service Web local sous forme de journaux, Wireshark, etc., et vous devez voir l'activité/les données souhaitées dans votre application Android.

5
Chris Cirefice

J'ai eu les mêmes problèmes, beaucoup de recherches ont ensuite révélé que vous devez modifier explicitement les paramètres de votre pare-feu. Votre pare-feu bloque l'accès à votre code depuis une source externe. Donc, tout ce que vous avez à faire est d'aller dans les paramètres du pare-feu, d'ajouter le port 80 (dans mon cas, j'utilise Apache http Server) pour les communications entrantes et sortantes. Vous pouvez maintenant le tester sur le navigateur de votre téléphone http: //192.16.. **: 80 / 

2
Sonal

Je l'ai fait sur un Mac utilisant GasMask et Charles Proxy Server. Votre téléphone et votre ordinateur doivent être sur le même réseau. 

par exemple, l’URL du service Web auquel vous voulez accéder se trouve à l’adresse http://api.xyz.com , vous utilisez d’abord GasMask pour pointer cette adresse vers votre hôte local, puis vous utilisez Charles pour configurer un serveur proxy. Ensuite, accédez aux paramètres de votre téléphone, accédez au Wi-Fi, appuyez longuement sur le réseau auquel vous êtes connecté, choisissez Modifier le réseau, puis entrez les paramètres de proxy que Charles vous a donnés. 

1
Chao

Je suis d’accord avec les autres réponses, car c’est une bonne approche si vous ne souhaitez pas exposer votre service Web DEV sur Internet. Cependant, il est beaucoup plus facile de simplement exposer le service Web. Il existe un certain nombre de services DNS gratuits, mais j’ai trouvé que no-ip était le plus facile à configurer. Je l'utilise exactement pour le but que vous avez demandé; je peux donc tester avec mon service Web DEV sur un périphérique réel.

Si vous choisissez de ne pas utiliser d'adresse IP (je n'ai aucune affiliation avec cette société, c'est celle que j'ai utilisée et que je connais bien), vous pouvez obtenir une URL gratuite accessible au public, telle que http://MyExampleWebServer.no. -ip-org , et no-ip a un utilitaire que vous pouvez installer. Ainsi, même si vous êtes derrière une adresse IP dynamique, il conservera toujours la bonne adresse IP externe associée à cette URL. Si vous travaillez depuis votre domicile, vous devez simplement vous assurer que vous transférez le trafic du port 80 vers votre adresse IP interne 192.x.x.x (ou le port que vous utilisez, peut-être 443 pour SSL).

C'est aussi simple que cela, et vous pouvez maintenant accéder à ce service Web à partir de tout appareil pouvant accéder à Internet.

Je n'ai pas travaillé avec, mais je pense que dyndns propose également un service similaire.

1
Jim

Dans mon cas, aucune de ces solutions ne fonctionne car le pare-feu Windows le bloque, mais appliquer une règle au pare-feu n'a aucun effet.

Le problème dans mon cas est que mon ordinateur portable est connecté au Wifi et que Windows disposait de la connexion Wifi comme un réseau public. Je dois changer la connexion réseau au réseau privé. http://www.comofuncionatodo.net/tecnologia/informatica/como-cambiar-de-red-publica-a-red-privaden-en-windows-10/

1
mabg

Cette solution concerne le serveur de développement GAE dans Eclipse.

Étape 1: Obtenir l'adresse IP du réseau local

Allez dans votre console de commande Windows (appuyez sur Win + R, puis tapez "cmd"). Dans la console, entrez "ipconfig". Vous verrez une liste d’affichage. Sous Adaptateur LAN sans fil Wi-Fi, obtenez l'adresse IPv4. Ce sera quelque chose 192.168.x.x

IP du LAN: 192.168.x.x

Étape 2:

Allez à Eclipse, ouvrez le serveur configuré

 GAE Server

Sous Propriétés de GAE Development Server -> Adresse de l'interface locale à laquelle vous souhaitez vous connecter, entrez l'adresse IP du réseau local, puis enregistrez.

Étape 3:

Maintenant, vous pouvez accéder au serveur GAE par

http: //192.168.x.x: 8888/

8888 - Fait référence au numéro de port, comme indiqué dans le serveur de développement GAE

0
Prakash Ayappan

Pour accéder aux services Web locaux en utilisant leurs propres hôtes de serveur plutôt que des adresses IP avec des ports, procédez comme suit:

  1. Assurez-vous que votre appareil Android et votre ordinateur local sont sur le même réseau.
  2. Installez SquidMan sur votre Mac, Linux ou tout autre serveur proxy.
  3. Configurez le HTTPPort (ex. 5555) et les clients (ex. 192.168.0.0/24) du serveur proxy sur votre propre masque de réseau, puis exécutez le serveur proxy.
  4. Vous utilisez les services Web dans:

    une. Un navigateur Web: configurez les paramètres de proxy de votre appareil Android à partir de Modifier les réseaux WiFi.

    b. Application Android: Configurez le proxy pour votre client HTTP. Si vous utilisez Volley, jetez un œil à ceci: Volley derrière un serveur proxy

  5. Vous pouvez maintenant vous y connecter en utilisant l’URL que vous utilisez sur votre hôte pour vous connecter au service Web (ex. http://my-local-machine.com )

Astuce: Si vous avez des codes de réponse 4xx, assurez-vous que votre service Web autorise les connexions à partir d'autres hôtes non locaux.

0
zed