有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java如何确定URL是http还是https?

我正在用Java编写一个网络爬虫工具。当我键入网站名称时,如何使其在不定义协议的情况下以http或https连接到该网站

try {
   Jsoup.connect("google.com").get();
} catch (IOException ex) {
   Logger.getLogger(LinkGUI.class.getName()).log(Level.SEVERE, null, ex);
}

但我得到了一个错误:

java.lang.IllegalArgumentException: Malformed URL: google.com

我能做什么?有这样做的类或库吗

我想做的是,我有一个165门课程的列表,每门课程都有65-71个html页面,上面都有链接。我正在编写一个Java程序来测试链接是否断开


共 (1) 个答案

  1. # 1 楼答案

    您可以编写自己的简单方法来尝试这两种协议,如:

    static boolean usesHttps(final String urlWithoutProtocol) throws IOException {
        try {
            Jsoup.connect("http://" + urlWithoutProtocol).get();
            return false;
        } catch (final IOException e) {
            Jsoup.connect("https://" + urlWithoutProtocol).get();
            return true;
        }
    }
    

    然后,您的原始代码可以是:

    try {
        boolean shouldUseHttps = usesHttps("google.com");
    } catch (final IOException ex) {
        Logger.getLogger(LinkGUI.class.getName()).log(Level.SEVERE, null, ex);
    }
    

    注意:对于每个URL,您应该只使用usesHttps()方法一次,以确定要使用哪个协议。知道这一点后,应该使用Jsoup进行连接。直接连接()。这样会更有效率