37
votes

Comment résoudre SocketException: échec de la recherche d'hôte: 'www.xyz.com' (erreur du système d'exploitation: aucune adresse associée au nom d'hôte, errno = 7)

Chaque fois que j'essaye de faire un appel http après environ 20 secondes, j'obtiens l'erreur suivante dans la console:

  http: ^0.12.0+1
  flutter: 1.0

Cette erreur se produit pour chaque méthode et chaque route que j'appelle via le package http de l'application.

Je développe une application Flutter sur Windows, en utilisant un appareil virtuel AVD d'Android Studio.

Versions:

E/flutter ( 8274): [ERROR:flutter/shell/common/shell.cc(184)] Dart Error: Unhandled exception:
E/flutter ( 8274): SocketException: Failed host lookup: 'flutter-project-xxxxx.firebaseio.com' (OS Error: No address associated with hostname, errno = 7)

Cas:

  1. Depuis la maison ou via le partage de connexion depuis mon téléphone: la connectivité fonctionne correctement sur chaque partie de l'appareil virtuel

  2. Depuis mon réseau de travail (derrière le pare-feu):

Seulement avec Android Web View, je peux naviguer sur Internet sans aucun problème (je peux même appeler la même URL, j'utilise dans le code et cela fonctionne). J'obtiens une erreur de connexion lorsque j'utilise une autre application (Chrome, Google Play, ecc ...) dans le périphérique virtuel, et plus précisément "SocketException", lors du test de mon application.

Quelle est la différence entre les appels provenant de cette application? Existe-t-il un moyen d'acheminer les appels de mon application de la même manière que ceux de la vue Web?

Merci!


0 commentaires

21 Réponses :


10
votes

Essayez d'ajouter <uses-permission android:name="android.permission.INTERNET" /> à votre fichier AndroidManifest.xml .


1 commentaires

Est-ce que cela a fonctionné, j'ai le même problème, les appels http fonctionnent sur le développement mais échouent en production.



70
votes

L'ajout d'une autorisation Internet n'est pas seulement une solution.
Vous devez également vous assurer que vous êtes en ligne, qu'il s'agisse d'un mobile ou d'un émulateur

  1. Assurez-vous que vous êtes en ligne, qu'il s'agisse d'un mobile ou d'un émulateur

  2. Assurez-vous d'avoir donné l'autorisation Internet dans android / app / src / main / AndroidManifest.xml de votre application

    <uses-permission android:name="android.permission.INTERNET"/>


5 commentaires

Curieusement, cela fonctionne sans l'autorisation Internet en mode débogage


Si l'application a besoin d'accéder à l'état du réseau, c'est-à-dire permettre à l'application d'accéder aux informations sur les réseaux, l'autorisation suivante est également nécessaire. <uses-permission android: name = "android.permission.ACCESS_NETWORK_STATE" /> Pour plus d'informations: developer.android.com/training/basics/network-ops/connecting


quelque temps arrive cette erreur, redémarrez apk le résoudre.


@Choco comme vous le faites sur votre téléphone


J'ai découvert qu'il existe plusieurs AndroidManifest.xml. Au moins un dans / main et un autre dans / debug.



8
votes

Eu le même problème. Ajout de permissions d'utilisation android: name = "android.permission.INTERNET" à "android / app / src / main / AndroidManifest.xml". Je ne pouvais toujours pas fonctionner, puis j'ai quitté et redémarré l'émulateur, puis cela a fonctionné.


1 commentaires

Même chose ici, impossible de se connecter au monde extérieur via http et j'avais également cette entrée dans le fichier AndroidManifest.xml. Donc, j'ai redémarré l'émulateur et voilà, a très bien fonctionné.



5
votes

Si vous utilisez un émulateur, assurez-vous que les données mobiles sont actives


1 commentaires

c'est ce qui a fonctionné pour moi. J'ai dû désactiver le wifi et me fier uniquement aux données. J'avais déjà le <uses-permission android: name = "android.permission.INTERNET" />.



1
votes

Le problème survient essentiellement lorsque l'appareil tente d'accéder à des ressources Internet, pour résoudre le problème, ajoutez le fichier au fichier AndroidManifest.xml @ android / app / src.


0 commentaires

1
votes

Vérifiez si le wifi est connecté ou non. Le mien a fonctionné après le redémarrage du wifi.


0 commentaires

3
votes

Si vous obtenez cette erreur lors de l'utilisation du plugin flutter_socket_io , n'oubliez pas d'initialiser la socket ie socketIO.init(); socketIO.connect(); avant d'essayer de vous y abonner. J'ai reçu la même erreur que celle indiquée ci-dessus lorsque je l'ai omise.


0 commentaires

1
votes

Vérifiez si vous avez activé le travail hors ligne dans les paramètres de gradle. Fichier-> Paramètres -> Construire -> Outils de construction -> Travail hors ligne

S'il est activé ou coché, décochez-le.


0 commentaires

1
votes
  • Assurez-vous qu'Internet est activé (à la fois sur le téléphone et sur le PC)
  • assurez-vous également que le serveur fonctionne correctement
  • vérifiez correctement votre URL

0 commentaires

0
votes

Aussi, il pourrait être bon de regarder les «Paramètres proxy» dans les «Contrôles étendus» de l'émulateur.

La façon dont cela a fonctionné pour moi était de changer pour utiliser le paramètre «No Proxy».

entrez la description de l'image ici


0 commentaires

3
votes

Assurez-vous que votre appareil mobile ou votre émulateur est connecté à Internet


0 commentaires

2
votes

Lorsque j'ai activé le wifi sur mon appareil, cela fonctionnait bien.


1 commentaires

S'il vous plaît postez votre ce type de réponse dans la section des commentaires s'il contient du code, alors c'est ok s'il vous plaît assurez-vous à l'avenir



-2
votes

Traduit: Dans mon cas, l'ordinateur avait Internet, mais pas l'émulateur. J'ai configuré la connexion sur l'émulateur et je l'ai résolue.

Original: Dans mon cas, l'ordinateur avait Internet, mais pas l'émulateur. J'ai configuré la connexion sur l'émulateur et je l'ai résolue.


1 commentaires

@SkypeMeSM Veuillez ne pas traduire les articles de l'auteur. Si l'auteur ne peut pas exprimer sa contribution en anglais, il n'est pas non plus en mesure de recueillir des commentaires, de discuter et de réagir.



0
votes

Vérifiez / assurez-vous d'avoir

<uses-permission android:name="android.permission.INTERNET" /> dans le fichier android / app / src / main / AndroidManifest.xml de votre application


0 commentaires

0
votes

Même après avoir ajouté

<uses-permission android:name="android.permission.INTERNET"/>

dans votre android / app / src / main / AndroidManifest.xml, si vous rencontrez toujours des problèmes,

Il peut y avoir une erreur avec l' adresse IP du serveur du site Web comme:

L'adresse IP du serveur est introuvable

Il vaut mieux attendre un certain temps et s'assurer de redémarrer le wifi, cela a fonctionné pour moi.


0 commentaires

1
votes

Assurez-vous que votre émulateur ou votre appareil est connecté à Internet. si votre émulateur ne peut pas se connecter à Internet, utilisez un VPN.


0 commentaires

1
votes

Parfois, un autre wifi peut avoir des interférences avec votre wifi connecté, ce qui peut également provoquer cette erreur. Essayez de définir le canal de votre wifi connecté sur auto ou à l'écart des autres canaux du wifi.


0 commentaires

0
votes

Même moi, j'ai eu le même problème. J'ai redémarré mon émulateur et cela a fonctionné !!


1 commentaires

Veuillez vérifier votre formulation "Même moi ...". Aux lecteurs ayant des antécédents linguistiques différents qui se lisent bizarrement et pourraient être mal interprétés (avec un certain effort certes) comme quelque chose de irrespectueux.



2
votes

En activant le WIFI, cela fonctionne pour moi et assurez-vous que vous avez également ajouté l'autorisation Internet dans le manifeste Android, il a également été ajouté automatiquement, mais vous devez vous en assurer. si ce n'est toujours pas le cas, invalidez les caches et redémarrez en espérant que cela fonctionne


0 commentaires

0
votes

J'ai eu le même problème lors de l'exécution de l'application sur un émulateur .

Mon ordinateur portable était connecté à Internet via le point d'accès mobile de mon téléphone. Mais apparemment, l'émulateur n'a pas pu accéder à Internet

Plus tard, je suis passé à la connexion de mon routeur Wi-Fi et l'application s'est déroulée sans problème comme prévu.

Je ne suis pas sûr, mais y a-t-il un accès spécial à accorder?

Astuce: essayez de googler quelque chose sur l'émulateur pour vérifier la connectivité Internet


0 commentaires

0
votes

Optez pour le gestionnaire AVD, puis choisissez votre émulateur, dans le menu Actions, cliquez sur le signe d'option vers le bas, puis choisissez effacer les données, puis redémarrez votre émulateur. Ça marche pour moi.


0 commentaires