如何在java中检查给定的域名http或https?

2022-09-03 06:52:16

我的问题

在我的Android应用程序中,我从用户那里获得url输入,例如“www.google.com”。

我想找出给定的网址是否使用或.httphttps

我尝试过什么

在参考了一些堆栈溢出问题之后,我尝试了getScheme()

try {
    String url_name="www.google.com";
    URI MyUri = new URI(url_name);
    String http_or_https="";
    http_or_https=MyUri.getScheme();
    url_name=http_or_https+"://"+urlname;
    Log.d("URLNAME",url_name);
}
catch (Exception e) {
    e.printStackTrace();
}

但是我上面的代码会引发一个异常。

我的问题

上述方法getScheme()是否正确?

如果上述方法不正确,如何找到网址http或https?


答案 1

域名就是一个域名,它与协议无关。域是 WHERE,协议是 HOW。

域名是你想去的地方,协议是你如何去那里,乘公共汽车,乘飞机,乘火车或乘船。问“我想去商店,我怎么问商店我应该坐火车还是开车去”是没有意义的。

这在浏览器中起作用的原因是,如果未提供协议,浏览器通常会尝试使用http和https进行连接。

如果您知道该 URL,请执行以下操作:

    public void decideProtocol(URL url) throws IOException {
            if ("https".equals(url.getProtocol())) { 
                // It is https
            } else if ("http".equals(url.getProtocol())) {
                // It is http
            }
    }

答案 2

您可以使用URLUtils检查给定的URL是http还是https。

URLUtil.isHttpUrl(String url);如果 url 是 http,则返回 True。

URLUtil.isHttpsUrl(String url);如果 url 是 https,则返回 True。