我想做问题724043中描述的事情,即对 URI 的路径组件进行编码。建议这样做的类是Commons HttpClient 3.1 中的URIUtil。不幸的是,该类似乎从最新版本的 HttpClient 中消失了。来自 HttpClient 4.1 的类似名称的类URIUtils不提供相同的功能。此类/方法是否已移至我不知道的其他库,或者它刚刚消失了?我最好将 3.1 版本中的类复制到我的代码中,还是有更简单的方法?
问问题
8654 次
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
这可以使用org.apache.http.client.utils.URIBuilder
httpclient-4.X() 中的实用程序来实现,如下所示。
public static String encodePath(final String path) {
if(path.length() == 0)
return "";
else
return new URIBuilder().setPath(path).toString();
}
于 2019-12-09T00:33:19.980 回答
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 回答