我想做问题724043中描述的事情,即对URI的路径组件进行编码。推荐使用的类是Commons HttpClient 3.1中的URIUtil。不幸的是,这个类似乎已经从最新版本的HttpClient中消失了。来自HttpClient 4.1的一个类似命名的类URIUtils没有提供相同的功能。这个类/方法是否被移到了我不知道的其他库中,或者它只是消失了?最好的方法是将3.1版本中的类复制到我的代码中,还是有一种更简单的方法?
发布于 2010-04-09 15:42:14
该模块的维护者已经下达了you should use the standard 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();发布于 2019-12-09 08:33:20
这可以使用httpclient-4.X ()中的org.apache.http.client.utils.URIBuilder实用程序来实现,如下所示。
public static String encodePath(final String path) {
if(path.length() == 0)
return "";
else
return new URIBuilder().setPath(path).toString();
}发布于 2021-01-20 06:12:22
您可以使用Standard JDK函数,例如
public static String encodeURLPathComponent(String path) {
try {
return new URI(null, null, path, null).toASCIIString();
} catch (URISyntaxException e) {
// do some error handling
}
return "";
}https://stackoverflow.com/questions/2605757
复制相似问题