java.net.UnknownHostException: nome de host inválido para o servidor: local


124

Quais são as etapas que devo seguir para solucionar o erro:

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

Adicionei o novo nome de host virtual no emulador do Android, mas o resultado retorna para

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

Quando digito meu URL do host virtual no meu PC, ele funciona em exibição. Por outro lado, quando executei o emulador e verifiquei o Logcat, não consegui ler ou verificar o status HTTP se 200, 202 ou um número de código de erro. Simplesmente retornou aUnknownHostException


6
um pouco mais de informações nos ajudaria a resolver o problema com mais facilidade #
clamp

você está atrás de um servidor proxy e definiu as configurações de proxy? Nesse caso, talvez seja necessário excluir o host local e outros hosts que não precisam da ajuda do servidor Proxy para resolver um Endereço IP válido.
ASGs

Adicionei o novo nome de host virtual no emulador do Android, mas o resultado retornará para "java.net.UnknownHostException virtualhostname em java.net.InetAddress.lookUpHostByName (InetAddress.java:506)". Quando digito meu URL de host virtual no meu PC, ele funciona em exibição. Por outro lado, quando executei o emulador e verifiquei o Logcat, não consegui ler ou verificar o status HTTP se 200, 202 ou um número de código de erro. Ele simplesmente retornou para "UnknownHostException"
David Dimalanta

Respostas:


66

O que a exceção está realmente dizendo é que não há servidor conhecido com o nome "local". Meu palpite é que você está tentando se conectar ao seu computador local. Tente usar o nome do host "localhost"ou talvez 127.0.0.1ou ::1(o último é IPv6).

Dos javadocs :

Lançado para indicar que o endereço IP de um host não pôde ser determinado.

127.0.0.1ou ::1ou "localhost"sempre deve ser a interface de loopback, então, se isso não funcionar, eu ficaria realmente surpreso.

Se realmente houver um servidor chamado "local" na sua rede - examine suas configurações de DNS ou adicione-o ao arquivo de hosts.


1
Em algumas implementações, uma reinicialização da JVM pode ser necessária para que as alterações no gateway / dns entrem em vigor, aparentemente.
André Laszlo

68

Eu estava tendo o mesmo problema no meu mac. Encontrei o problema quando fiz ping do meu $HOSTNAMEterminal e ele retornou ping: cannot resolve myHostName: Unknown host.

Resolver:

  1. Faça echo $HOSTNAMEno seu terminal.
  2. Seja qual for o nome de host mostra (digamos myHostName), tente ping-lo: ping myHostName. Se retornar ping: cannot resolve myHostName: Unknown host, adicione uma entrada ao seu /etc/hostsarquivo.
  3. Para esse /etc/hostsarquivo de edição e adicione o seguinte:

    127.0.0.1 myHostName

Espero que ajude.


Maravilha como ele funciona em algumas máquinas fora da caixa e em algumas temos de adicionar a entrada de anfitriões
Skynet

16

java.net.UnknownHostException: o host não foi resolvido:

Lançado para indicar que o endereço IP de um host não pôde ser determinado.

Essa exceção também é gerada quando você está conectado a um wifi válido, mas o roteador não recebe a Internet. É muito fácil reproduzir isso:

  1. Conecte-se a um wifi válido
  2. Agora remova o cabo do roteador enquanto o roteador estiver conectado

Você observará este erro !!

Você realmente não pode resolver isso, só pode notificar o usuário normalmente. (algo como - "Não é possível fazer uma conexão")


1
Seria mais genérico dizer que a exceção é gerada quando o host não é encontrado no DNS ou quando o próprio DNS não pode ser encontrado, por exemplo, por qualquer motivo de conectividade de rede ou uma configuração incorreta.
Marquês de Lorne

Então, como você resolve esse problema?
Cokedude

2
Você realmente não pode resolver isso, só pode notificar o usuário normalmente. (algo como - "Não é possível fazer uma conexão")
Ash

O que significa ter esse problema em uma rede escolar, mas não minha conexão pessoal em casa?
nitrato de sódio

@sodiumnitrate Pode ser que a rede da sua escola exija alguma autenticação id / pwd. Tente abrir qualquer URL da Web no navegador e veja se isso é exibido corretamente.
Ash

7

Isso não é específico da pergunta, mas ela apareceu quando eu estava pesquisando no Google sobre o mencionado UnknownHostException, e a correção não foi encontrada em nenhum outro lugar, então pensei em adicionar uma resposta aqui.

A exceção que foi recebida continuamente foi:

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)
    ... 

Não importa como eu tentei me conectar a qualquer host válido, imprimi-lo no terminal também não ajudaria. Tudo estava certo.

A solução

Não chamando trim() a string do host que continha espaço em branco . Ao escrever um servidor proxy, o host foi obtido dos cabeçalhos HTTP com o uso de split(":")ponto e vírgula no HOSTcabeçalho. Este espaço em branco esquerdo e faz com UnknownHostExceptionque um host com espaço em branco não seja um host válido. Fazendo um host = host.trim()no String hostresolveu a questão ambígua.


Este foi o meu problema.
Sterling Diaz

1
Obrigado - isso me salvou. No meu caso, o host String sendo transmitido para a função tinha um \ n sufixo, portanto, a execução .trim()desse conserto o corrigia para mim!
Rayzinnz 17/0318

1
Obrigado, gastei muito tempo tentando descobrir qual era o problema até perceber que digitei um espaço em branco entre dois endereços IP diferentes.
Sandoval0992

5

Isso pode acontecer devido a várias razões

1) Verifique se você possui uma VPN conectada; por vezes, esse erro pode ocorrer se sim

"Seu nome de host, localhost, resolve para um endereço de loopback: 127.0.0.1; usando 10.xxx.1.193 (na interface cscotun0)"

2) Verifique seu $ HOSTNAME

3) tente executar ping $ HOSTNAME na linha de comando e, se não funcionar, ajuste as configurações do sistema para fazer com que o host local responda aos pings


5

Seu nome de host está ausente. O JBoss usa essa variável de ambiente ($ HOSTNAME) quando se conecta ao servidor.

[root@xyz ~]# echo $HOSTNAME
xyz

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

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

Existem dezenas de coisas que podem causar isso. Comente se você descobrir um novo motivo.

Para um hack até que você possa resolver permanentemente esse problema no seu servidor, você pode adicionar uma linha ao final do seu arquivo / etc / hosts:

127.0.0.1 xyz.xxx.xxx.edu xyz


4

Tente o seguinte:

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);

Aparar () o URL


Aparar uma string codificada sem espaços não faz sentido.
Blake McBride

1

Tentando conectar-se ao seu computador local.try com o nome do host "localhost" ou talvez :: / - o último é ipv6


1

Por favor, tente definir a variável de ambiente SPARK_LOCAL_IP para o endereço IP (pode ser localhost, ou seja, seu próprio endereço IP) que você deseja conectar. Por exemplo

$ export SPARK_LOCAL_IP=182.95.208.152

Dessa forma, você não precisará alterar as configurações linux existentes. Trabalhou para mim, a esperança também ajuda.


0

Conecte seu celular com uma conexão wifi diferente com um provedor de serviços diferente . Não sei o problema exato, mas não consegui me conectar ao servidor com um provedor de serviços específico, mas ele funciona quando me conecto a outro provedor de serviços. Então tente!


0

Eu tive esse problema no meu aplicativo Android ao pegar um arquivo xml, o formato do meu link não era válido, reformatei com o URL completo e funcionou.


0

Se você está aqui porque o seu emulador fornece essa exceção, vá em Ferramentas> AVD Manager no seu emulador Android e inicialize a frio o seu Emulador.


-1

Se o seu arquivo / etc / localhosts tiver entrada como abaixo: Adicione a entrada do nome do host como abaixo:

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

Isto deve resolver o problema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.