Что случилось с URIUtil.encodePath из commons-httpclient-3.1? - PullRequest
9 голосов
/ 09 апреля 2010

Я хочу сделать то, что описано в вопросе 724043 , а именно кодировать компоненты пути URI. Рекомендуемый класс: URIUtil от Commons HttpClient 3.1. К сожалению, этот класс, похоже, исчез из самой последней версии HttpClient. Класс с аналогичным именем из HttpClient 4.1, URIUtils , не обеспечивает такую ​​же функциональность. Этот класс / метод был перемещен в какую-то другую библиотеку, о которой я не знаю, или она просто исчезла? Мне лучше всего скопировать класс из версии 3.1 в мой код или есть более простой способ?

1 Ответ

8 голосов
/ 09 апреля 2010

Сопровождающие модуля постановили, что вместо этого следует использовать стандартный класс URI JDK :

Причиной замены URI и URIUtils на стандартный Java URI была очень просто: никто не желал поддерживать эти классы.

Существует ряд служебных методов, которые помогают обойти различные проблемы с реализацией java.net.URI, но в остальном стандарт Классы JRE должны быть достаточными, не так ли?

Итак, самое простое - посмотреть на источник encodePath из выпуска 3.1 и продублировать то, что он делает, в своем собственном коде (или просто скопировать метод / класс в свою кодовую базу).

Или вы можете согласиться с принятым ответом на вопрос, на который вы ссылаетесь (но, похоже, сначала нужно разбить URL на части):

new URI(
    "http", 
    "search.barnesandnoble.com", 
    "/booksearch/first book.pdf",
    null).toString();
...