2011-05-06 109 views
17

这个问题几乎可以肯定的问过,但我总是问它,因为我找不到答案。用于通用URL/URI操作的标准Java类

通常,有没有某种类型的工具类可以协助与URL/URI相关的常见字符串操作?

我在想像Java SE的URL类,但也许有点更强大。我在找的东西,可以让你做一些简单的事情,比如:

  • 获取查询字符串参数的列表
  • 的“addParameter”方法添加 查询字符串参数,它会 采取小心加入 “&” 的 “?” 和 “=” 必要
  • 此外,编码 参数值将是理想...

让我知道,谢谢!

+1

好问题。我无法找到一个好的,所以推出了我自己的。我想在这里看到这些建议。 – Joel 2011-05-06 15:33:44

+2

这是一个众所周知的和很多抱怨的漏洞,Java SE中没有任何东西可以对查询字符串做任何有趣的事情。对于其他一切,有java.net.URI,我建议首选java.net.URL,因为除其他外,它有一个理智的equals()实现。 – 2011-05-09 20:23:14

+0

查看Galimatias - 一个用Java编写的URL解析和规范化库https:// github。com/smola/galimatias – 2017-10-31 17:13:15

回答

8

真的没有(奇怪的是)任何标准都可以做到。有一些零零碎碎的,通常埋在各种UTIL包:

我用http://java.net/projects/urlencodedquerystring/pages/Home体面的影响(参数提取)。

Atlassian的JIRA有http://docs.atlassian.com/jira/4.2/index.html?com/atlassian/jira/util/UrlBuilder.html,我实际上已经从jar中提取并使用它。

在Android上,http://developer.android.com/reference/android/net/Uri.Builder.html是一款Uri构建器,其工作得很好,只要轻松构建一个网址即可。

最后,在一个经典的历史重演案例中:A good library to do URL Query String manipulation in Java

我真的只是掏出android.net.Uri.Builder类,然后将它与urlencodedquerystring类配对,然后将它们随身携带,但这看起来好像是Apache公用程序包的一个好选择。

+0

太棒了,感谢您的回复!我之前也在一些不同的专有库中遇到类似的代码,这就是引发这个问题的原因。我想我会刺你的建议!我会稍后再打开此问题,以查看是否有任何其他答复。 – JasonStoltz 2011-05-09 18:34:08

+0

接受这个答案。另外,Tom Anderson对主要问题的评论也很有帮助。 – JasonStoltz 2011-05-10 12:47:22

+0

这里有另一个问题,有一个建议,从地图创建一个URL编码的查询字符串。 http://stackoverflow.com/questions/2809877/how-to-convert-map-to-url-query-string/2810102#2810434 – JasonStoltz 2011-05-10 13:17:25

0

这并不直接回答OP的问题(它不是一个通用的,用于URL处理全能库),:如果你打算无论如何要使用Spring,你不妨考虑ServletUriComponentsBuilderUriComponentsBuilder类(参见javadoc的herehere)。

我相信它们与spring-web依赖项捆绑在一起。恕我直言,这些提供了很多方便的工具方法来处理URI,URL和查询参数。