我的要求相当简单,但我需要做很多这样的事情,所以我正在寻找一个强大的解决方案.
是否有一个很好的轻量级库,用于将URL分解为Java中的组件部分?我指的是主机名,查询字符串等.
小智 9
我总是忘记URI格式,所以这里是:
<scheme>://<userinfo>@<host>:<port><path>#<fragement>
Run Code Online (Sandbox Code Playgroud)
这里有一个例子:
URI uri = new URI ("query://jeff@books.com:9000/public/manuals/appliances?stove#ge");
Run Code Online (Sandbox Code Playgroud)
以下将发生:
uri.getAuthority() 将返回 "jeff@books.com:9000"uri.getFragment () 将返回 "ge"uri.getHost () 将返回 "books.com"uri.getPath () 将返回 "/public/manuals/appliances"uri.getPort () 将返回 9000uri.getQuery () 将返回 "stove"uri.getScheme () 将返回 "query"uri.getSchemeSpecificPart () 将返回 "//jeff@books.com:9000/public/manuals/appliances?stove"uri.getUserInfo () 将返回 "jeff"uri.isAbsolute () 将返回 trueuri.isOpaque () 将返回 false我发现这个博客很方便:探索Java的网络API:URI和URL
java.net.URI并且java.net.URL不适用于许多现代 URL。java.net.URI遵循 RFC 2396,这是一个非常古老的标准。java.net.URL有时效果很好,但如果您使用的是野外发现的 URL,则在很多情况下都会失败。
为了解决这些问题,我编写了galimatias,一个 Java 的 URL 解析和规范化库。它几乎可以处理任何你能想象到的 URL(基本上,如果它在网络浏览器中工作,galimatias 会正确解析它)。并且它有非常方便的API。
您可以在以下网址获取: https: //github.com/smola/galimatias