gpt4 book ai didi

java - 如何使用 Java 中的 InetAddress 对象创建 URL 对象?

转载 作者:行者123 更新时间:2023-12-02 03:21:31 25 4
gpt4 key购买 nike

我需要在 Java 中从 IPv4 地址(String 或 InetAddress 对象 - 任一都可以)创建 http 或 https URL 对象。我已经这样做了 10 个小时了。

碰壁的尝试如下所述:

  1. 尝试 #1:我尝试通过组装字符串来创建 URL,然后将其提供给 URL 构造函数。

    • 教科书规定 URL 可以是“protocol://host”,其中 host 可以是主机名或 IP 地址。但是创建一个像这样的 URL: URL a = new URL("http://151.101.65.69"); 并打开一个到该 URL 的流 (a) 会给出HTTP 错误 500(内部服务器错误 - 发生服务器不知道如何处理的意外情况)。
    • 让我生气的是 URL a = new URL("http://stackoverflow.com"); 有效。
    • 此时我陷入了困境。我不知道要改变什么,也不知道如何继续前进。
  2. 尝试#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()”,但也没有成功。
  3. 我正在尝试弄清楚如何使用 IP 地址打开网站。看来我的浏览器遇到了与我的代码相同的问题。我读过 How to access site through IP address when website is on a shared host?但我没有任何用户名,因为我希望能够打开用户拥有 IP 地址的任何网站。添加端口(如80)似乎不起作用;将用户名留空或使用通用的“用户”或“访客”也不行。

我需要从 IPv4 String 或 InetAddress 对象创建 URL 对象,但我陷入了困境。我知道像您这样知识渊博的程序员可能会说从 IP 地址创建 URL 不是 IP 地址的用途,或者指出我没有包含 URL 的文件部分,但这不是目前的问题。你能帮我解决我的核心挑战吗?

最佳答案

D.B. 提供的答案很好。我有非常相似的代码;但你会发现这段代码并不是每次都有效。您传递给 D.B. 答案提供的代码的 IPv4 地址将无法打开 URL 流(例如 stackoverflow 的 IP 地址)。我认为问题出在我的编码上,这就是我希望在 stackoverflow 上获得帮助的原因。但我现在意识到问题是我在问这个问题时缺乏理解。我现在明白,拥有 IPv4 地址不足以打开网络上的每个网站。每当一台服务器托管多个网站时,IP 地址都可以用于连接到该服务器,但不能同时识别我们要打开/访问的网站。这位先生解释得很好:http://ask-leo.com/why_doesnt_accessing_a_site_by_its_ip_address_work.html

@D.B.感谢您抽出时间提供帮助。非常感谢!

关于java - 如何使用 Java 中的 InetAddress 对象创建 URL 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39553307/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com