[解決済み] JavaによるHTTP URLアドレスのエンコード
2022-03-24 06:51:12
質問
私のJavaスタンドアローンアプリケーションは、ユーザーからURL(ファイルを指す)を取得し、私はそれをヒットしてそれをダウンロードする必要があります。私が直面している問題は、HTTP URLアドレスを適切にエンコードすることができないことです...
例
URL: http://search.barnesandnoble.com/booksearch/first book.pdf
java.net.URLEncoder.encode(url.toString(), "ISO-8859-1");
は私を返します。
http%3A%2F%2Fsearch.barnesandnoble.com%2Fbooksearch%2Ffirst+book.pdf
しかし、私が欲しいのは
http://search.barnesandnoble.com/booksearch/first%20book.pdf
(スペースは %20 で置換)
だろう
URLEncoder
は、HTTPのURLをエンコードするようには設計されていません...。JavaDocには"Utility class for HTML form encoding"と書いてありますが...。他に方法はないのでしょうか?
どのように解決するのですか?
その java.net.URI クラスは、URL のドキュメントにある
<ブロッククオートURIクラスは、特定の状況下でその構成フィールドのエスケープを行うことに注意してください。URL のエンコードとデコードを管理するために推奨される方法は、URI クラスを使用することです。
のように、複数の引数を持つコンストラクタのいずれかを使用します。
URI uri = new URI(
"http",
"search.barnesandnoble.com",
"/booksearch/first book.pdf",
null);
URL url = uri.toURL();
//or String request = uri.toString();
(URIの単一引数コンストラクタは、不正な文字をエスケープしない)
上記のコードでエスケープされるのは不正な文字のみで、ASCII以外の文字はエスケープされません(fatihさんのコメント参照)。
その
toASCIIString
メソッドを使用すると、US-ASCII 文字だけを含む String を取得できます。
URI uri = new URI(
"http",
"search.barnesandnoble.com",
"/booksearch/é",
null);
String request = uri.toASCIIString();
のようなクエリを持つURLの場合
http://www.google.com/ig/api?weather=São Paulo
の場合、5パラメータ版のコンストラクタを使用します。
URI uri = new URI(
"http",
"www.google.com",
"/ig/api",
"weather=São Paulo",
null);
String request = uri.toASCIIString();
関連
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
[解決済み] ブラウザによって異なるURLの最大長とは?
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaScriptでURLをエンコードする?
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み] java.net.URLConnectionを使用してHTTPリクエストを発生させ処理する方法
-
[解決済み] クエリ文字列パラメータのJava URLエンコーディング
-
[解決済み】HTTPのPOSTとPUTの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Java Error スレッド "AWT-EventQueue-0" で例外発生 java.lang.
-
Java Exceptionが発生しました エラー解決
-
javaの実行中に「javaの例外が発生しました」と表示された場合はどうすればよいですか?
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
eclipse アクセス制限です。タイプ 'xxx' は API ではありません(必須ライブラリ '' の制限)。
-
SpringBootApplication を型解決できない。
-
JQuery DataTable 详解
-
Methodのinvokeメソッド実装のJavaリフレクション
-
node js npm gruntインストール、elasticsearch-head 5.Xインストール
-
[解決済み] クエリ文字列パラメータのJava URLエンコーディング