java – 在我的地址前添加“Http://”
发布时间:2020-12-15 02:07:17 所属栏目:Java 来源:网络整理
导读:我从一个来源提取地址,但有些提取物没有http://地址的前面,我如何检查地址是否有http://如果他们不是我如何添加http:// infront? :o 得到这个错误,我猜是由于http:// infront的“缺乏” java.net.MalformedURLException: no protocol: www.speedtest.n
我从一个来源提取地址,但有些提取物没有http://地址的前面,我如何检查地址是否有http://如果他们不是我如何添加http:// infront? :o
得到这个错误,我猜是由于http:// infront的“缺乏” java.net.MalformedURLException: no protocol: www.speedtest.net at java.net.URL.<init>(URL.java:583) at java.net.URL.<init>(URL.java:480) at java.net.URL.<init>(URL.java:429) at a.PageRead.r(PageRead.java:29) at a.ThreadDownloaderWriter.run(ThreadDownloaderWriter.java:35) at java.lang.Thread.run(Thread.java:722) public StringBuilder readPage() { try { URL url = new URL(this.strURL); System.out.println(this.strURL); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); String line; StringBuilder sb = new StringBuilder(); while ((line = reader.readLine()) != null) { sb.append(line + "n"); } reader.close(); return sb; } catch (MalformedURLException e) { e.printStackTrace(); return new StringBuilder(""); } catch (IOException e) { e.printStackTrace(); return new StringBuilder(""); } } 解决方法
您问题的字面答案如下所示:
String url = ... ; // Whatever if (!url.startsWith("http://")) { url = "http://" + url; } 但这仍然不是一个很好的解决方案.例如,https URLS怎么样? ftp甚至文件系统URL(file://)怎么样.然后你可能想要考虑区分大小写的事情(“http://”!=“HTTP://”!=“HttP://”即使实际上它们都意味着同样的事情并且会被接受通过Java的URL类). 你可以尝试更小心一点: if (!url.toLowerCase().matches("^w+://.*")) { url = "http://" + url; } 这匹配URL字符串的开头与任何“单词字符”后跟冒号(:)和两个斜杠(//),然后默认为http://如果缺少URL的协议部分.这将覆盖比原始(文字)答案更多的案例. 最终,如果有人给你一个没有协议部分的URL,那么它就是一个无效的URL. 您应该考虑阅读一本关于Java编程的书,因为这些都是基本的逻辑/ Java API问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |