Envoi d'une requête http en local

Bonjour,

J’essaye d’envoyer un URL vers un serveur local pour. commander un ESP8266
J’ai alors lancer cette requête.
Quand l’ip est correct j’ai bien un retour 200 mais quand l’IP est fausse rien ne se passe avez-vous une idée il n’arrive pas au print(« FIN »);
Merci pour votre aide

    print("ENTREE");
    http.Response response =
    await http.get(valURL);
    if(response.statusCode != 200 && response.statusCode != 201) {
      Message = "Erreur Status code  ${response.statusCode}";
    }else{
      Message = "Connection acceptée";
    }
    print("FIN");  //***********  N'execute pas cette instruction 
                        //************ quand l'ip est fausse

Essaye de print l’intérieur de Response, il doit s’arrêter à ce niveau.

Bonjour Stephan c’est bien ce que j’ai fait :frowning:

En local ça ne fonctionne pas, j’ai déjà tester. Cela s’explique par le fait que les deux ne sont pas le même réseau. Je réalisait une application avec l’API de WordPress (et le site était en local). Une fois que le site est mit en ligne tout fonctionne a merveille. Je pense qu’il peut avoir une solution pour que cela marche en local mais je ne suis pas un as de la programmation.
Si tu trouve fais moi signe.

Bonjour,

Voici ce que j’ai trouvé ça l’air de fonctionner :wink:

    Message="";
    try {
      http.Response response = await http.get(
        valURL
      ).timeout(const Duration(seconds: 1));
    } on TimeoutException catch (e) {
      Message = 'Timeout';
    } on Error catch (e) {
      Message = 'Error: $e';
    }
    setState(() {
     Message;
    });

Excellent, try and catch ou un .then sur le future puis catch error.

Bonjour Stephan,

Merci

J’ai aussi ajouté ceci avant le setState

if(Message=="") {
   Message = "Commande envoyée";
}

Le setState est seulement obligatoire pour un rendu dynamique de ton UI, donc si tu veux afficher ce message à l’utilisateur.