使用Java编码URL,同时保持特殊字符不变

时间:2017-10-05 10:06:27

标签: java uri

我正在尝试用Java构建一个URL,并对查询参数进行编码。编码器应该转义字符' +'。我遇到的所有方法都会对其进行编码。有什么方法可以实现这一点,还是我需要编写自定义编码器? 谢谢!

2 个答案:

答案 0 :(得分:0)

尝试" UriComponentsBuilder"如果您使用Spring.This包还包含其他可能满足您要求的选项。

UriComponentsBuilder.fromPath("URL String");

如果您不使用Spring,可以使用" UrlValidator"由" apache.commons"

给出
String[] schemes = {"http","https"}; // DEFAULT schemes = "http", "https", "ftp"
        UrlValidator urlValidator = new UrlValidator(schemes);
        if (urlValidator.isValid("urlString")) {
           System.out.println("URL is valid");
        } else {
           System.out.println("URL is invalid");
        } 

答案 1 :(得分:0)

URI类应该能够为您完成此操作。具体来说,使用

URI​(String scheme, String userInfo, String host, 
    int port, String path, String query, String fragment) 

URI​(String scheme, String authority, String path, String query, 
    String fragment)    

创建URI对象,其中您提供的组件未编码。然后使用URI.toString()URI.toASCIIString()生成正确编码的网址。

  

编码器应该逃脱字符' +'。我遇到的所有方法都会编码。

编码' +'因为%2B%是正确的行为。 URL / URI规范不支持转义。任何未编码的' +'无论你如何尝试逃避它,在URL中将解码为空格字符。这就是规范所说的。