java.net.UnknownHostException: nom d'hôte non valide pour le serveur: local


124

Quelles sont les étapes à suivre pour résoudre l'erreur:

java.net.UnknownHostException: Invalid hostname for server: local

J'ai ajouté le nouveau nom d'hôte virtuel à l'émulateur Android mais le résultat revient à

 java.net.UnknownHostException virtualhostname at 
  java.net.InetAddress.lookUpHostByName(InetAddress.java:506)

Lorsque je tape mon URL d'hôte virtuel sur mon PC, cela fonctionne à l'écran. Là encore, lorsque j'ai exécuté sur Emulator et vérifié Logcat, je ne pouvais pas lire ou vérifier l'état HTTP si 200, 202 ou un numéro de code d'erreur. Il est simplement revenu àUnknownHostException


6
un peu plus d'informations nous aideraient à résoudre le problème plus facilement
pincez le

êtes-vous derrière un serveur proxy et avez-vous configuré les paramètres proxy? Si tel est le cas, vous devrez peut-être exclure l'hôte local et d'autres hôtes qui n'ont pas besoin de l'aide du serveur proxy pour se résoudre à une adresse IP valide.
asgs

J'ai ajouté le nouveau nom d'hôte virtuel à l'émulateur Android mais le résultat revient à "java.net.UnknownHostException virtualhostname at java.net.InetAddress.lookUpHostByName (InetAddress.java:506)". Lorsque je tape mon URL d'hôte virtuel sur mon PC, cela fonctionne à l'écran. Là encore, lorsque j'ai exécuté sur Emulator et vérifié sur Logcat, je ne pouvais pas lire ou vérifier l'état HTTP si 200, 202 ou un numéro de code d'erreur. Il est simplement retourné à "UnknownHostException"
David Dimalanta

Réponses:


66

Ce que l'exception veut vraiment dire, c'est qu'il n'y a pas de serveur connu avec le nom "local". Je suppose que vous essayez de vous connecter à votre ordinateur local. Essayez "localhost"plutôt avec le nom d'hôte , ou peut-être 127.0.0.1ou ::1(le dernier est IPv6).

Depuis les javadocs :

Lancé pour indiquer que l'adresse IP d'un hôte n'a pas pu être déterminée.

127.0.0.1ou ::1ou "localhost"devrait toujours être l'interface de bouclage, donc si cela ne fonctionne pas, je serais vraiment surpris.

S'il y a vraiment un serveur appelé «local» sur votre réseau - examinez vos paramètres DNS ou ajoutez-le à votre fichier d'hôtes.


1
Sur certaines implémentations, un redémarrage de la JVM peut être nécessaire pour que les modifications de passerelle / DNS prennent effet, apparemment.
André Laszlo

69

J'avais le même problème sur mon mac. J'ai trouvé le problème lorsque j'ai envoyé un ping à mon $HOSTNAMEterminal et qu'il est revenu ping: cannot resolve myHostName: Unknown host.

Résoudre:

  1. Faites echo $HOSTNAMEsur votre terminal.
  2. Quel que soit le hostname il montre (disons myHostName), essayez de le ping: ping myHostName. S'il revient, ping: cannot resolve myHostName: Unknown hostajoutez une entrée dans votre /etc/hostsfichier.
  3. Pour ce /etc/hostsfichier d' édition et ajoutez ce qui suit:

    127.0.0.1 myHostName

J'espère que ça aide.


Je me demande comment cela fonctionne sur certaines machines hors de la boîte et sur certaines, nous devons ajouter l'entrée d'hôtes
Skynet

16

java.net.UnknownHostException: l'hôte n'est pas résolu:

Lancé pour indiquer que l'adresse IP d'un hôte n'a pas pu être déterminée.

Cette exception est également déclenchée lorsque vous êtes connecté à un wifi valide mais que le routeur ne reçoit pas Internet. Il est très facile de reproduire ceci:

  1. Connectez-vous à un wifi valide
  2. Retirez maintenant le câble du routeur lorsque le routeur est branché

Vous observerez cette erreur !!

Vous ne pouvez pas vraiment résoudre cela, vous ne pouvez avertir l'utilisateur que gracieusement. (quelque chose comme - "Impossible d'établir une connexion")


1
Il serait plus général de dire que l'exception est levée lorsque l'hôte n'est pas trouvé dans le DNS ou lorsque le DNS lui-même ne peut pas être trouvé, par exemple pour une raison de connectivité réseau ou une mauvaise configuration.
Marquis de Lorne

Alors, comment résolvez-vous ce problème?
cokedude

2
Vous ne pouvez pas vraiment résoudre cela, vous ne pouvez avertir l'utilisateur que gracieusement. (quelque chose comme - "Impossible d'établir une connexion")
Ash

Que signifie avoir ce problème dans un réseau scolaire, mais pas ma connexion personnelle à la maison?
nitrate de sodium

@sodiumnitrate Peut-être que le réseau de votre école nécessite d'abord une authentification id / pwd .. Essayez d'ouvrir n'importe quelle URL Web dans le navigateur et voyez si elle s'affiche correctement
Cendres

7

Ce n'est pas spécifique à la question, mais cette question est apparue lorsque je cherchais sur Google pour le UnknownHostException , et le correctif ne se trouve nulle part ailleurs, alors j'ai pensé ajouter une réponse ici.

L'exception qui a été continuellement reçue était:

java.net.UnknownHostException:  google.com
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    ... 

Peu importe comment j'ai essayé de me connecter à un hôte valide, l'imprimer dans le terminal n'aiderait pas non plus. Tout allait bien.

La solution

Ne pas appeler trim() la chaîne hôte contenant des espaces . Lors de l'écriture d'un serveur proxy, l'hôte a été obtenu à partir d'en-têtes HTTP en utilisant des split(":")points-virgules pour l'en- HOSTtête. Cet espace blanc gauche et provoque le en UnknownHostExceptiontant qu'hôte avec un espace blanc n'est pas un hôte valide. Faire un host = host.trim()sur le a String hostrésolu le problème ambigu.


C'était mon problème.
Sterling Diaz

1
Merci - cela m'a sauvé. Dans mon cas, l'hôte String passé à la fonction avait un suffixe \ n, donc courir .trim()sur cela l'a corrigé pour moi!
rayzinnz

1
Merci, j'ai passé trop de temps à essayer de comprendre quel était le problème jusqu'à ce que je réalise que j'ai tapé un espace vide entre deux adresses IP différentes.
Sandoval0992

5

Cela peut se produire pour diverses raisons

1) Vérifiez si vous avez un VPN connecté, vous pouvez parfois obtenir cette erreur si oui

"Votre nom d'hôte, localhost se résout en une adresse de bouclage: 127.0.0.1; en utilisant plutôt 10.xxx.1.193 (sur l'interface cscotun0)"

2) Vérifiez votre $ HOSTNAME

3) essayez d'envoyer un ping à $ HOSTNAME en ligne de commande et si cela ne fonctionne pas, modifiez les paramètres système pour que votre hôte local réponde aux pings


5

Votre nom d'hôte est manquant. JBoss utilise cette variable d'environnement ($ HOSTNAME) lorsqu'il se connecte au serveur.

[root@xyz ~]# echo $HOSTNAME
xyz

[root@xyz ~]# ping $HOSTNAME
ping: unknown host xyz

[root@xyz ~]# hostname -f
hostname: Unknown host

Il y a des dizaines de choses qui peuvent causer cela. Veuillez commenter si vous découvrez une nouvelle raison.

Pour un piratage jusqu'à ce que vous puissiez résoudre définitivement ce problème sur votre serveur, vous pouvez ajouter une ligne à la fin de votre fichier / etc / hosts:

127.0.0.1 xyz.xxx.xxx.edu xyz


4

Essayez ce qui suit:

String url = "http://www.google.com/search?q=java";
URL urlObj = (URL)new URL(url.trim());
HttpURLConnection httpConn = 
(HttpURLConnection)urlObj.openConnection();
httpConn.setRequestMethod("GET");
Integer rescode = httpConn.getResponseCode();
System.out.println(rescode);

Couper () l'URL


Couper une chaîne codée en dur sans espaces n'a aucun sens.
Blake McBride

1

Essayer de vous connecter à votre ordinateur local.try avec le nom d'hôte "localhost" à la place ou peut-être :: / - le dernier est ipv6


1

Veuillez essayer de définir la variable d'environnement SPARK_LOCAL_IP sur l'adresse IP (peut être localhost, c'est-à-dire votre propre adresse IP) à laquelle vous souhaitez vous connecter. Par exemple

$ export SPARK_LOCAL_IP=182.95.208.152

De cette façon, vous ne serez pas obligé de modifier les paramètres Linux existants. A travaillé pour moi, l'espoir vous aide aussi.


0

Connectez votre mobile avec une connexion wifi différente avec un fournisseur de services différent . Je ne connais pas le problème exact mais je n'ai pas pu me connecter au serveur avec un fournisseur de services spécifique, mais cela fonctionne lorsque je me connecte à un autre fournisseur de services. Alors essayez-le!


0

J'ai eu ce problème dans mon application Android lors de la saisie d'un fichier xml, le format de mon lien n'était pas valide, j'ai reformaté avec l'URL complète et cela a fonctionné.


0

Si vous êtes ici parce que votre émulateur vous donne cette exception, allez dans Outils> AVD Manager dans votre émulateur Android et démarrez à froid votre émulateur.


-1

Si votre fichier / etc / localhosts a une entrée comme ci-dessous: Ajoutez une entrée de nom d'hôte comme ci-dessous:

127.0.0.1 local host (add your hostname here)
::1 (add hostname here) (the last one is IPv6).

Cela devrait résoudre le problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.