提问人:Mnementh 提问时间:11/13/2008 最后编辑:Bill the LizardMnementh 更新时间:7/19/2015 访问量:2658
如何避免 URL.equals 需要在 Java 中访问互联网?
How to avoid, that URL.equals needs access to the internet in Java?
问:
Java 类库中 URL 类的方法发出 DNS 请求以获取主机名的 IP,以检查两个 IP 是否相等。即使对于从同一 .有没有办法避免这种互联网访问?equals()
String
答:
1赞
C. K. Young
11/13/2008
#1
不要使用 URL.equals。正如文档所说,
注意:已知定义的行为与HTTP中的虚拟主机不一致。
equals
评论
0赞
Mnementh
11/13/2008
我应该如何测试是否相等?
2赞
C. K. Young
11/13/2008
您可以使用 toString() 或 toExternalForm() 来获取外部表单,并进行比较。此处的初步测试表明它不访问 DNS。
0赞
C. K. Young
11/13/2008
我刚刚对比尔的回答投了赞成票。只需在 URL 对象上调用 toURI() 即可。
3赞
Rick
11/13/2008
#2
如果您只想比较 url 字符串,请尝试
url1.toString().equals(url2.toString())
评论
0赞
Bill the Lizard
11/13/2008
这两个字符串可能大不相同,但指向同一资源。
4赞
Rick
11/13/2008
如果要检查 URL 引用的资源,显然需要 Internet 访问。因此,我假设他想比较 url 本身。因此,我的限定条件是“如果您只想比较 url 字符串”。
20赞
Bill the Lizard
11/13/2008
#3
使用 java.net.URI 而不是 URL。
评论
2赞
Gareth
11/13/2008
当然,这在语义上也很有意义,因为您要比较标识符而不是位置
评论