2017-10-05 8 views
0

JavaでURLを構成し、クエリパラメータをエンコードしています。エンコーダは '+'文字をエスケープする必要があります。私が見つけたすべてのメソッドは、それをエンコードします。これを達成する方法はありますか、カスタムエンコーダを作成する必要はありますか? ありがとう!特殊文字をそのまま残してJavaでURLをエンコードする

答えて

0

Springを使用している場合は、「UriComponentsBuilder」を試してください。このパッケージには、要件を満たすためのその他のオプションも含まれています。

UriComponentsBuilder.fromPath("URL String"); 

もしあなたの春は「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"); 
     } 
+0

「+」文字をエスケープしますか? –

0

URIクラスはこれがあなたのために行うことができるはずで与えられた「UrlValidator」を使用することができます使用していません。具体的には、指定した成分が符号化されない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.toString()またはURI.toASCIIString()を使用して、正しくエンコードされたURLを生成します。


エンコーダは、文字 '+' をエスケープする必要があります。私が見つけたすべてのメソッドは、それをエンコードします。

'+'を%2B%でエンコードするのは正しい動作です。 URL/URIの指定はエスケープをサポートしていません。エンコードされていないURLの「+」は、どのようにエスケープしようとしても、スペース文字としてデコードされます。それがスペックです。

+0

アドレスバーに「+」を表示する方法はありませんか? –

+0

それはアドレスバーの実装に依存します。 URLを自動的にデコードして表示するかどうかを判断する。 –

関連する問題