我需要生成有效的 URL。
示例:我传递 url:google.com。生成器返回 http://google.com/ .
一些浏览器会这样做。我尝试做我自己的算法,但失败了。
另一个例子:www.yadayadayada.com/../test 返回 http://www.yadayadayada.com/test/
public String generateValidURL(String url) {
int pos = 0;
try {
url = url.trim();
url = url.replaceAll(" ", "%20");
if (url.startsWith("http") && (!url.substring(4).startsWith("://"))) {
for (int i = 4; i < 7; i++) {
if ((url.charAt(i) == '/') || (url.charAt(i) == ':')) {
pos = i;
}
}
url = url.substring(pos + 1);
}
if(url.startsWith("https")){
url = url.replace("https", "http");
}
if (!url.startsWith("http")) {
url = "http://" + url;
}
if (!url.substring(7).contains("/")) {
url += "/";
}
url = url.replace(",", ".");
url = url.replace("../", "/");
url = url.substring(0, 7) + url.substring(7).replace("//", "/");
return url;
} catch (Exception e) {
System.out.println("Error generating valid URL : " + e);
return null;
}
}
最佳答案
更新:现在您想要实现的目标更加清晰了 - 我认为没有实用程序。你的方法应该可以,只需调试它。
原答案:
URL url = new URL("http", domain, "/");
String output = url.toExternalForm();
事实上,您可能想改用 URI
类:
URI uri = new URI("http", "google.com", "/test", null);
您可以使用 uri.resolve("../relativePath")
它将得到解析。但请记住,您使用 /../test
== /test
的示例不正确(您必须手动处理这种情况)
关于java - 有 Java 的 URL 有效生成器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5951322/