web-dev-qa-db-fra.com

Comment pointer vers localhost: 8000 avec le package Dart http dans Flutter?

Je suis Flutter Networking/HTTP tutorial pour faire une requête GET à un serveur fonctionnant sur mon hôte local: 8000. Visiter mon hôte local via mon navigateur fonctionne très bien. Mon code ressemble à ceci:

var url = 'http://localhost:8000';
Future<String> getUnits(String category) async {
    var response = await httpClient.get('$url/$category');
    return response.body;
}

Cela fonctionne bien lorsque je pointe vers une URL réelle, telle que https://example.com, mais quand je pointe vers https://localhost:8000 ou https://localhost (ou toute variante de ceux-ci), j'obtiens une erreur commençant par:

E/flutter ( 4879): [ERROR:topaz/lib/tonic/logging/Dart_error.cc(16)] Unhandled exception:
E/flutter ( 4879): SocketException: OS Error: Connection refused, errno = 111, address = localhost, port = 47060
E/flutter ( 4879): #0      IOClient.send (package:http/src/io_client.Dart:30:23)

Le port dans l'erreur ci-dessus change chaque fois que je recharge l'application. J'ai regardé dans le code du package http et il ne semble pas qu'il y ait un moyen de spécifier le port pour l'URL. Comment pointer vers mon hôte local?

11
Mary

Réponse courte: vous pouvez passer un Uri au lieu d'une chaîne comme paramètre

      var client = createHttpClient();
      client.get(new Uri.http("locahost:8000", "/category"));
2
Rémi Rousselet

Remplacement de la chaîne localhost par 10.0.2.2 l'a résolu pour moi, car j'exécutais le code dans l'émulateur Android, qui s'exécute dans une machine virtuelle. Il s'agit essentiellement d'un doublon de cette question .

16
Mary

remplacez 'localhost' dans votre URL vers la connexion wifi ip par exemple: ' http: // localhost: 80 ' => ' http://192.168.1.102:80 '. vous pouvez obtenir votre ip wifi à partir de l'invite de commande avec cmd> ipconfig (adaptateur LAN sans fil WI-FI.

var url = 'http://192.168.1.102:8000';
Future<String> getUnits(String category) async {
    var response = await httpClient.get('$url/$category');
    return response.body;
}
2
HamidReza

faire cela dans Ubuntu

  1. aller à réglage
  2. cliquez sur l'onglet résea
  3. maintenant cliquez sur le réseau câblé et copiez l'adresse IP et remplacez par localhost

remarque: votre connexion doit être câblée, elle peut être LAN , SB Tethering mais pas Bluetooth Tethering ( dans mon cas Bluetooth Tethering me donne une erreur)

0