Unknown HostException: server 的主机名无效: local

我应该采取哪些步骤来解决这个错误:

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

我在 Android 模拟器上添加了新的虚拟主机名,但结果返回到

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

当我在电脑上输入虚拟主机 URL 时,它会显示出来。然而,当我在模拟器上运行并检查 Logcat 时,如果出现200、202或错误代码号,我就无法读取或检查 HTTP 状态。它只是返回到 UnknownHostException

770576 次浏览

这个异常实际上是说没有名为“ local”的已知服务器。我猜你是想连接到本地电脑。尝试使用主机名 "localhost",或者 127.0.0.1::1(最后一个是 IPv6)。

来自 Javadocs:

抛出以指示 IP 地址 宿主的身份无法确定。

127.0.0.1或者 ::1或者 "localhost"应该总是环回接口,所以如果这不起作用,我会很惊讶。

如果您的网络上真的有一个名为“本地”的服务器,请检查您的 DNS 设置或将其添加到您的主机文件。

异常: 主机无法解析:

抛出以指示无法确定主机的 IP 地址。

当您连接到一个有效的 wifi 但是路由器不接收 Internet 时,也会引发此异常。很容易复制这一点:

  1. 连接到有效的 wifi
  2. 现在,在路由器插入时将电缆从路由器上移除

你会看到这个错误! !

你不能真正解决这个问题,你只能优雅地通知用户。(比如-“无法建立连接”)

尝试使用主机名“ localhost”或者: :/-最后一个是 ipv6连接到您的本地 Computer.try

这可能由于各种原因而发生

1)检查是否已连接 VPN,如果是,有时可能会出现此错误

”您的主机名,localhost 解析为一个环回地址: 127.0.0.1; 改为使用10.xxx. 1.193(在接口 cscotun0上)

2)检查你的 $HOSTNAME

3)尝试在命令行上 ping $HOSTNAME,如果不起作用,调整系统设置,使您的本地主机响应 ping

我的 Mac 也有同样的问题。我发现问题时,我从终端我的 $HOSTNAME和它返回 ping: cannot resolve myHostName: Unknown host

解决:

  1. 在终端上执行 echo $HOSTNAME

  2. 不管它显示什么主机名(比如说 myHostName) ,尝试 ping 它: ping myHostName。如果返回 ping: cannot resolve myHostName: Unknown host,那么在 /etc/hosts文件中添加一个条目。

  3. 编辑 /etc/hosts文件并添加以下内容:

    127.0.0.1 myHostName

这并不是问题的具体问题,但这个问题出现时,我正在谷歌为提到的 UnknownHostException,并没有在其他任何地方找到修复程序,所以我想我会添加一个答案在这里。

不断收到的例外情况是:

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

无论我如何尝试连接到任何有效的主机,在终端打印它也不会有帮助。一切都是对的。

解决方案

没有呼叫 trim() 对于包含空格的主机字符串。在编写代理服务器时,主机通过使用 split(":")分号来表示 HOST报头,从 HTTP 报头获得。这留下了空格,并导致 UnknownHostException作为带有空格的主机不是有效的主机。在 String host上做 host = host.trim()解决了这个模棱两可的问题。

您的主机名不见了,JBoss 在连接到服务器时使用这个环境变量($HOSTNAME)。

[root@xyz ~]# echo $HOSTNAME
xyz


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


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

有很多原因会导致这种情况。如果你发现了新的原因,请评论。

为了在服务器上永久解决这个问题,可以在/etc/hosts 文件中添加一行 直到最后:

127.0.0.1 xyz.xxx.xxx.edu xyz

请尝试将 SPARK _ LOCAL _ IP 环境变量设置为您想要连接的 ip 地址(可以是 localhost,即您自己的 ip 地址)。例如。

$ export SPARK_LOCAL_IP=182.95.208.152

这样就不需要修改现有的 Linux 设置。 对我有用,希望也能帮到你。

如果/etc/localhosts 文件有以下条目: 添加主机名条目如下:

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

这应该能解决问题。

试试以下方法:

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

修剪() URL

用不同的 wifi 连接 不同的服务提供商连接 你的手机。 我不知道确切的问题,但我不能连接到服务器与特定的服务提供商,但它的工作时,我连接到其他服务提供商。那就试试!

我有这个问题在我的 Android 应用程序时,抓取一个 xml 文件的格式我的链接是无效的,我重新格式化了完整的网址,它的工作。

如果你在这里是因为你的仿真器给了你那个例外,在你的 android 仿真器中进入 Tools > AVD Manager,然后冷启动你的仿真器。

我也有同样的问题。

重启码头对我来说就是解决办法。出于某种原因,它需要重新启动,我不知道为什么,但它工作。