我有一个应用程序,它接受用户输入的URL并获取它。它必须是带有协议的有效URL。 但是,用户可能忘记包含协议。
例如,当我访问此网站时,我只需输入
stackoverflow.com
而不是
http://stackoverflow.com
因为我知道我的浏览器会为我处理它(连同自动完成,所以我通常只需要写stack
)
所以我继续
String lnk = "stackoverflow.com";
try {
URL url = new URL(lnk);
} catch (Exception e ) {
e.printStackTrace();
}
但它抛出异常
java.net.MalformedURLException: no protocol: stackoverflow.com
探索URL
类,也没有setProtocol
方法,因此这可能无济于事。
如果我想为可能有或没有指定协议的输入字符串设置协议,我应该使用什么?我可以手动进行字符串扫描和检查。
答案 0 :(得分:3)
URL
类有一个构造函数,它将协议String作为输入:
URL.URL(String protocol, String host, String file)
e.g。 URL url = new URL("http", "stackoverflow.com", "");
如果需要添加协议以防丢失,则以下代码段可用于http
和https
:
if(!lnk.startsWith("http://") && !lnk.startsWith("https://")) {
lnk = "http://" + lnk;
}
答案 1 :(得分:2)
你可以使用以下方法检查它是否包含http:
...
if(!lnk.startsWith("http://") {
lnk = "http://" + lnk;
}
希望这有帮助。