12

質問724043で説明されていること、つまり URI のパス コンポーネントをエンコードしたいと考えています。そのために推奨されるクラスは、Commons HttpClient 3.1のURIUtilです。残念ながら、そのクラスは HttpClient の最新バージョンから消えたようです。HttpClient 4.1 の同様の名前のクラスであるURIUtilsは、同じ機能を提供しません。このクラス/メソッドは、私が気付いていない他のライブラリに移動されましたか、それともなくなったのですか? クラスを 3.1 リリースから自分のコードにコピーするのが最善でしょうか、それとももっと簡単な方法がありますか?

4

3 に答える 3

8

モジュールのメンテナーは、代わりに標準の JDK URI クラスを使用することを決定しました。

URI と URIUtils が標準の Java URI に置き換えられた理由は非常に単純です。これらのクラスを維持しようとする人が誰もいなかったからです。

java.net.URI 実装に関するさまざまな問題を回避するのに役立つユーティリティ メソッドが多数ありますが、それ以外の場合は標準の JRE クラスで十分ではないでしょうか。

したがって、最も簡単な方法は、3.1 リリースの encodePath のソースを調べて、独自のコードでその機能を複製することです (または、メソッド/クラスをコードベースにコピーするだけです)。

または、参照した質問に対して受け入れられた回答を使用することもできます (ただし、最初に URL を部分に分割する必要があるようです)。

new URI(
    "http", 
    "search.barnesandnoble.com", 
    "/booksearch/first book.pdf",
    null).toString();
于 2010-04-09T07:42:13.790 に答える
0

標準の JDK関数を使用できます。

public static String encodeURLPathComponent(String path) {
    try {
        return new URI(null, null, path, null).toASCIIString();
    } catch (URISyntaxException e) {
        // do some error handling
    }
    return "";
}
于 2021-01-19T22:12:22.003 に答える