请问有没有标准URL规范化的Java包或库?
URL 表示的 5 个组成部分
http://www[dot]example[dot]com:8040/folder/exist?name=sky#head
- 方案:http
- 权限:www.example.com:8040
- 路径:/folder/exist
- 查询:?name=sky
- 片段:#head
标准 URL 规范化的 3 种类型
基于语法的规范化
- 大小写规范化——将方案和权限组件中的所有字母转换为小写
- 百分比编码规范化——解码任何对应于未保留字符的百分比编码八位位组,例如连字符的 %2D 和下划线的 %5
- 路径段归一化——从路径组件中删除点段,例如“.”和“..”
基于方案的规范化
- 在 URL 的权限部分后添加尾随的“/”
- 去掉默认的端口号,比如http scheme的80
- 截断 URL 片段
基于协议(protocol)的规范化
- 仅当访问资源的结果相同时才适用
- 例如example.com/data被源站定向到example.com/data/
最佳答案
正如其他人所提到的,java.net.URL和/或 java.net.URI是一些明显的起点。
这里有一些其他选项:
Galimatias (西类牙语为“胡言乱语”)似乎是一个固执己见且相对流行的 Java URL 规范化库。源代码可以在 github.com/smola/galimatias 找到。 .
galimatias started out of frustration with java.net.URL and java.net.URI. Both of them are good for basic use cases, but severely broken for others
github.com/sentric/url-normalization库提供了另一种(在我看来不寻常的)方法,它反转域部分;例如“com.stackoverflow”而不是“stackoverflow.com”。
您可以在 Github 上找到其他变体,有时使用 Python、Ruby 和 PHP 等语言实现。
关于java - 标准 URL 规范化 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3365271/