我正在尝试用Java构建一个URL,并对查询参数进行编码。编码器应该转义字符' +'。我遇到的所有方法都会对其进行编码。有什么方法可以实现这一点,还是我需要编写自定义编码器? 谢谢!
答案 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中将解码为空格字符。这就是规范所说的。