[英]Encoding a URL in Java while leaving special characters untouched
我正在嘗試使用Java構造一個URL,並使用查詢參數進行編碼。編碼器應轉義字符'+'。 我遇到的所有方法都對其進行編碼。 有什么方法可以完成此操作,還是需要編寫自定義編碼器? 謝謝!
如果您使用的是Spring,請嘗試“ UriComponentsBuilder”。此軟件包還包含其他可能滿足您要求的選項。
UriComponentsBuilder.fromPath("URL String");
如果您不使用Spring,則可以使用“ apache.commons”給出的“ UrlValidator”
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");
}
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()
生成正確編碼的URL。
編碼器應轉義字符“ +”。 我遇到的所有方法都對其進行編碼。
正確的行為是將'+'編碼為%2B%。 URL / URI規范不支持轉義。 網址中任何未編碼的“ +”都將解碼為空格字符,無論您如何嘗試對其進行轉義。 這就是規范所說的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.