有 Java 编程相关的问题?

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

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

我的问题

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

我想知道给定的url是使用http还是https

我尝试过的

参考了一些堆栈溢出问题后,我尝试了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()是否正确

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


共 (3) 个答案

  1. # 1 楼答案

    正如所指出的,如果用户不敢提供完整的url,包括协议类型。应用程序可能会使用一种尝试和错误的方法,尝试使用可用协议列表建立连接。(http,https)。成功的点击可能被视为默认。同样,所有这些都是关于可用性的,这种方法比仅仅用难看的错误消息来烦扰一个漫不经心的用户要好

  2. # 2 楼答案

    您可以使用Apache UrlValidator

    您可以指定允许的url模式,在本例中,代码如下所示:

    String[] schema = {"https"};
    UrlValidator urlValidator = new UrlValidator(schemes);
    
    if (urlValidator.isValid("http://foo.bar.com/")) {
       System.out.println("url is valid");
    } else {
       System.out.println("url is invalid");
    }
    
    if (urlValidator.isValid("https://foo.bar.com/")) {
       System.out.println("url is valid");
    } else {
       System.out.println("url is invalid");
    }
    
  3. # 3 楼答案

    你不能仅从URL获取它。这没有道理。一些网站可以同时使用http&https。这取决于网站本身是否使用SSL证书