java - 有 Java 的 URL 有效生成器吗?

标签 java url generator

我需要生成有效的 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/

相关文章:

url - 哈希参数与 url 参数,何时使用哪个?

python - python 如何知道何时返回生成器?

java - 使用 jackson 将 json 反序列化为 java - 特殊字符问题

c# - ASP.NET - 基于动态内容生成网页

java - 如何对以不同频率执行的突发事件进行编程?

php - 有没有办法为没有实际支持页面的 URL 提供网页?

python - 获取生成器的子集

python - 未使用的生成器中的上下文管理器是如何完成的?

java - 用户每天登录成功后如何加分

java - 使用 Class.forName ("com.actitime5.Testcases."+variable 时出现 ClassNotFoundException);