gpt4 book ai didi

java - 如何检查 URL 是否不存在?

转载 作者:行者123 更新时间:2023-12-04 06:10:01 26 4
gpt4 key购买 nike

我试图检查我想要连接的 URL 是否存在。这是我的尝试:

try {
// Connect to the url
document = Jsoup.connect("http://www.malformedurl.com").get();
tags = document.select(".tags .tag a");
num = document.select(".tag .count");
// Take the wanted data
UrlFunctions.UrlParse(tags, num);
} catch (java.net.MalformedURLException e) {
System.out.println("URL DOESNT EXIST");
}

运行后,我没有收到消息 URL DOESNT EXIST .我应该使用什么异常或我还应该做什么?

最佳答案

一个 MalFormedURLException仅当 URL 为 时才会抛出真的格式错误,即它不符合 URL spec ,而不是当它不存在时。这是由 java.net.URL 的构造函数抛出的掩饰。类(class)。它的 javadoc告诉以下内容:

throws

MalformedURLException - If the string specifies an unknown protocol.


所以,只有当你使用例如 "www.malformedurl.com" 时才会抛出它或者 "foo://www.malformedurl.com"而不是 "http://www.malformedurl.com" .
要检测 URL 是否存在,您最好寻求不同的解决方案。如果主机名未知,那么您应该捕获 UnknownHostException 反而:
try {
document = Jsoup.connect("http://www.malformedurl.com").get();
// ...
} catch (UnknownHostException e) {
System.err.println("Unknown host");
e.printStackTrace(); // I'd rather (re)throw it though.
}
这不一定是另一端的问题,当您网络上的 DNS 服务器是伪造的时,也会发生这种情况。
或者,要检测 IP 地址是否可达,那么您应该捕获 SocketTimeoutException 反而:
try {
document = Jsoup.connect("http://12.34.56.78").get();
// ...
} catch (SocketTimeoutException e) {
System.err.println("IP cannot be reached");
e.printStackTrace(); // I'd rather (re)throw it though.
}

关于java - 如何检查 URL 是否不存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887911/

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