如果URL不存在,如何将协议添加到URL?(在Android应用程序中)
我正在开发一个通过编辑文本小部件从用户那里获取URL链接的应用程序。如何检查给定URL是否有协议?如果没有,我如何为特定的URL添加正确的协议 例如,如果用户输入:如果URL不存在,如何将协议添加到URL?(在Android应用程序中),android,Android,我正在开发一个通过编辑文本小部件从用户那里获取URL链接的应用程序。如何检查给定URL是否有协议?如果没有,我如何为特定的URL添加正确的协议 例如,如果用户输入:google.com 如何使其成为:https://google.com 主要问题是知道给定地址的正确URL协议(是否为http/https/ftp?等等)。只需将您的输出字符串与.contains()属性进行比较即可 String value = editText.getText().toString(); if(!value
google.com
如何使其成为:https://google.com
主要问题是知道给定地址的正确URL协议(是否为
http/https/ftp
?等等)。只需将您的输出字符串与.contains()
属性进行比较即可
String value = editText.getText().toString();
if(!value.contains("https://")) {
// add https:// to ur string
}else {
// No need to add
}
您可以使用String.startsWith()检查url字符串是否以http://开头
public String valid_url(final String url)
{
if (!url.startsWith("http://") && !url.startsWith("https://"))
{
return "http://" + url;
}
return url;
}
如前所述,使用SDK的URL类 这里有一个例子:
var urlWithScheme = new URL("https://www.google.com");
var urlWithoutScheme = new URL("www.google.com");
if (urlWithScheme.getProtocol() != null && urlWithScheme.getProtocol().length() > 0) {
System.out.println("Given URL includes scheme: " + urlWithScheme.getProtocol());
}
if (urlWithoutScheme.getProtocol() != null && urlWithoutScheme.getProtocol().length() > 0) {
System.out.println("Given URL includes scheme: " + urlWithoutScheme.getProtocol());
} else {
System.out.println("Url has no Protocol and you can't guess it by the domain name, because under this name all possible services can exist!");
}
如果给定的URL没有protocoll,您就猜不到了。因为在域名下,Parralel中可以存在任何特定于协议的服务
我会把它缩小到只支持http和https。为此,您可以编写一个测试,比如连接到https url,如果成功,可以使用它,因为首选https。如果获得重定向或未连接,请尝试http;) 首先使用.contains()方法检查url是否有协议 并使用.indexof()和.substring()方法获取协议
这个解决方案对我有效:
if(!url.startsWith("www.")&& !url.startsWith("http://") && !url.startsWith("https://")){
url = "www."+url;
}
if(!url.startsWith("http://") && !url.startsWith("https://")){
url = "http://"+url;
}
希望这将对您有所帮助。只需将您的输出字符串与
.contains()
属性进行比较。检查:如果条件错误,则检查|
中可能存在的重复项。因为当url字符串看起来像https://stackoverflow.com
然后将其传递给此函数,结果将是:http://https://stackoverflow.com
。将|
替换为&&
将解决此问题。
if(!url.startsWith("www.")&& !url.startsWith("http://") && !url.startsWith("https://")){
url = "www."+url;
}
if(!url.startsWith("http://") && !url.startsWith("https://")){
url = "http://"+url;
}