Java で HTTP URL を適切にエンコードする方法
Java で URL を操作する場合、URL を正しくエンコードして、サーバーによって正確に解釈されます。 java.net.URLEncoder は HTML フォームのエンコードには役立ちますが、HTTP URL エンコードに関しては不十分です。この記事では、java.net.URI クラスを使用して HTTP URL を効果的にエンコードする方法について説明します。
java.net.URI クラスは、URI および URL コンポーネントを操作およびエンコードする方法を提供します。 URI の単一引数コンストラクターは不正な文字をエスケープしないため、質問で説明されているようなエラーが発生します。この問題に対処するには、次のような複数の引数を持つコンストラクターを利用する必要があります。
URI uri = new URI("http", "search.barnesandnoble.com", "/booksearch/first book.pdf", null); URL url = uri.toURL();
このアプローチでは、不正な文字が効果的にエスケープされ、次のような望ましい結果が得られます。
http://search.barnesandnoble.com/booksearch/first%20book.pdf
Itこのエンコーディングは不正な文字にのみ影響し、非 ASCII 文字には影響しないことに注意することが重要です。 US-ASCII 文字のみを含む String の場合、toASCIIString メソッドを使用できます:
URI uri = new URI("http", "search.barnesandnoble.com", "/booksearch/é", null); String request = uri.toASCIIString();
これは、非 ASCII 文字を含むクエリを含む URL に特に役立ちます:
URI uri = new URI("http", "www.google.com", "/ig/api", "weather=São Paulo", null); String request = uri.toASCIIString();
java.net.URI クラスを利用すると、HTTP URL を効果的にエンコードして、サーバーによって正しく処理され、正確な URL が得られるようになります。データの取得。
以上がjava.net.URI クラスを使用して Java で HTTP URL を適切にエンコードする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。