【发布时间】:2016-09-18 01:44:31
【问题描述】:
我需要在 Java 中从 IPv4 地址(字符串或 InetAddress 对象 - 任何一个都可以)创建一个 http 或 https URL 对象。我已经在这里呆了 10 个小时了。
下面描述的撞墙尝试:
-
尝试 #1:我尝试通过组装一个字符串来创建 URL,然后将其提供给 URL 构造函数。
- 教科书规定 URL 可以是“protocol://host”,主机可以是主机名或 IP 地址。但是创建这样的 URL:
URL a = new URL("http://151.101.65.69");并打开指向该 URL (a) 的流会给出 HTTP 错误 500(内部服务器错误 - 发生服务器不知道如何处理的意外情况)。 - 让我生气的是
URL a = new URL("http://stackoverflow.com");有效。 - 此时我被卡住了。我不知道要改变什么,或者如何前进。
- 教科书规定 URL 可以是“protocol://host”,主机可以是主机名或 IP 地址。但是创建这样的 URL:
-
尝试 #2:我尝试使用 InetAddress 类中的“getHostName()”方法对 IP 地址进行反向查找。
- 这应该通过反向 DNS 查找返回主机名。然而,我一直在尝试 151.101.65.69(stackoverflow Web 服务器 IP 地址),但查找失败。失败是指 IP 地址作为字符串返回,而不是主机名作为字符串返回。我阅读了 Oracle 文档 http://docs.oracle.com/javase/1.5.0/docs/api/java/net/InetAddress.html#getHostName(),但我不明白如何克服文档中提到的“安全管理器”(或者如果这确实是反向查找失败的原因)。
- 我也尝试了“getCannonicalHostName()”,但也没成功。
我试图弄清楚如何使用 IP 地址打开网站。看起来我的浏览器遇到了与我的代码相同的问题。我阅读了How to access site through IP address when website is on a shared host?,但我没有任何用户名,因为我希望能够打开用户拥有 IP 地址的任何网站。加个端口(比如80)好像不行;将用户名留空或使用通用的“用户”或“访客”也不行。
我需要从 IPv4 字符串或 InetAddress 对象创建一个 URL 对象,但我被卡住了。我知道像您这样知识渊博的程序员可能会说从 IP 地址生成 URL 不是 IP 地址的用途,或者指出我没有包含 URL 的文件部分,但目前这不是问题.你能帮我解决我的核心挑战吗?
【问题讨论】:
-
如果您在 Web 浏览器中加载
http://151.101.65.69会发生什么? -
@chrylis 我收到一条错误消息,内容为:“快速错误:未知域:151.101.65.69。请检查该域是否已添加到服务中。”
-
我忘记在帖子中提及这一点,但我也收到了我尝试过的其他地址的消息,例如 Google 和 Duckduckgo。
-
您是否从这些错误消息中得出任何推论?
-
我意识到 IP 地址在 URL 中不能很好地融合。我希望有人会提出一些方法来解决这个问题。也许建议一条路线。
标签: java oracle http url inetaddress