簡體   English   中英

用Java編碼URL,同時保留特殊字符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM