2010-07-29 132 views
9

我想问问是否有任何Java包或库具有标准的URL规范化? URL表示的标准URL规范化 - Java

5个组件

http://www[dot]example[dot]com:8040/folder/exist?name=sky#head

  1. 方案:HTTP
  2. 权威:www.example.com:8040
  3. 路径:/文件夹/存在
  4. 查询:名称=天空
  5. 片段:#head

3种类型的标准URL正常化

基于语法正常化

  • 案例规范化 - 在sche处转换所有字母me和权威组件
  • 百分比编码标准化 - 解码任何与未保留字符相对应的百分比编码八位字节,例如%2D用于连字符和%5用于下划线
  • 路径段标准化 - 删除点段路径组件,如 '' 和 '..'

方案基于规范化

  • 添加尾随 '/' URL
  • 0的授权组件后
  • 移除默认端口号,例如80为http方案
  • 截断URL的片段

基于协议的标准化

  • 只有当访问所述资源的结果是等同的适当
  • 例如,example.com/data通过原始服务器被引导至example.com/data/

回答

5

正如其他人所说,java.net.URL和/或java.net.URI一些明显的出发点。

这里是一些其他的选项:

  1. Galimatias(西班牙语为“胡言乱语”)似乎是Java的一个刚愎自用,比较流行的URL规范化库。源代码可在github.com/smola/galimatias找到。

    galimatias开始出于对java.net.URL和java.net.URI的沮丧。他们两人都是基本用例良好 ,但严重打破了别人

  2. github.com/sentric/url-normalization库提供它颠倒了域部分的另一个(不寻常的,在我看来)的方式;例如“com.stackoverflow”而不是“stackoverflow.com”。

你可以找到其他的变体,有时用Github上的Python,Ruby和PHP等语言实现。