标准URL规范化 - Java

时间:2010-07-29 17:18:25

标签: java url normalization

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

5个网址表示组件

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

  1. 计划: http
  2. 权限: www.example.com:8040
  3. 路径: / folder / exist
  4. 查询:?name = sky
  5. 片段: #head
  6. 3种标准网址规范化

    基于语​​法的规范化

    • 案例规范化 - 将方案和权限组件中的所有字母转换为小写
    • 百分比编码规范化 - 解码与未保留字符对应的任何百分比编码八位字节,例如连字符的%2D和下划线的%5
    • 路径段规范化 - 从路径组件中删除点段,例如“。”和“..”

    基于方案的规范化

    • 在URL
    • 的权限组件后添加尾随'/'
    • 删除默认端口号,例如http scheme
    • 的80
    • 截断网址片段

    基于协议的规范化

    • 仅在访问资源的结果相同时才适用
    • 例如,example.com/data由origin server
    • 定向到example.com/data/

3 个答案:

答案 0 :(得分:5)

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

这里有一些其他选择:

  1. Galimatias(西班牙语为" gibberish")似乎是一个固执的,相对流行的Java规范化库。源代码可以在github.com/smola/galimatias找到。

      

    galimatias开始时对java.net.URL和java.net.URI感到沮丧。他们俩都很好   对于基本用例,但对其他用户严重破坏

  2. github.com/sentric/url-normalization库提供另一种(在我看来不寻常)方法,它可以反转域部分;例如" com.stackoverflow"而不是" stackoverflow.com"。

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

答案 1 :(得分:3)

URI uri = URI.create("http://www.example.com:8040/folder/exist?name=sky#head");
String scheme = uri.getScheme();
String authority = uri.getAuthority();
// ...

http://java.sun.com/j2se/1.4.2/docs/api/java/net/URI.html

答案 2 :(得分:0)

相关问题