首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >commons-httpclient-3.1中的URIUtil.encodePath发生了什么变化?

commons-httpclient-3.1中的URIUtil.encodePath发生了什么变化?
EN

Stack Overflow用户
提问于 2010-04-09 15:33:02
回答 3查看 8.5K关注 0票数 12

我想做问题724043中描述的事情,即对URI的路径组件进行编码。推荐使用的类是Commons HttpClient 3.1中的URIUtil。不幸的是,这个类似乎已经从最新版本的HttpClient中消失了。来自HttpClient 4.1的一个类似命名的类URIUtils没有提供相同的功能。这个类/方法是否被移到了我不知道的其他库中,或者它只是消失了?最好的方法是将3.1版本中的类复制到我的代码中,还是有一种更简单的方法?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 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分成几个部分):

代码语言:javascript
运行
复制
new URI(
    "http", 
    "search.barnesandnoble.com", 
    "/booksearch/first book.pdf",
    null).toString();
票数 8
EN

Stack Overflow用户

发布于 2019-12-09 08:33:20

这可以使用httpclient-4.X ()中的org.apache.http.client.utils.URIBuilder实用程序来实现,如下所示。

代码语言:javascript
运行
复制
    public static String encodePath(final String path) {
       if(path.length() == 0)
          return "";
       else
          return new URIBuilder().setPath(path).toString();
    }
票数 0
EN

Stack Overflow用户

发布于 2021-01-20 06:12:22

您可以使用Standard JDK函数,例如

代码语言:javascript
运行
复制
public static String encodeURLPathComponent(String path) {
    try {
        return new URI(null, null, path, null).toASCIIString();
    } catch (URISyntaxException e) {
        // do some error handling
    }
    return "";
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2605757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档