标准URL规范化--Java

问题描述 投票:9回答:3

我想问一下,有没有什么Java包或库有标准的URL规范化?

URL表示的5个组成部分

http:/www[点]example[点]com:8040folderexist?name=sky#head。

  1. 计划。http
  2. 权力。www.example.com:8040
  3. 路径。文件夹存在
  4. 查询。name=sky
  5. 片段。#head

标准URL规范化的3种类型

基于语法的标准化

  • 大小写正常化--将方案和权限组件的所有字母转换为小写。
  • 百分比编码归一化--对任何对应于非保留字符的百分比编码八位组进行解码,如%2D代表连字符,%5代表下划线。
  • 路径段归一化--删除路径组件中的点段,如'.'和'.'。

基于方案的规范化

  • 在URL的权威成分后添加尾部的''。
  • 移除默认端口号,如80的http方案
  • 截断URL的片段

基于协议的标准化

  • 只有当访问资源的结果相当时,才适合使用。
  • 例如,example.comdata由源服务器指向example.comdata。
java url normalization
3个回答
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.comj2se1.4.2docsapijavanetURI.html。


5
投票

正如其他人提到的那样。java.net.URLjava.net.URI 是一些明显的起点。

这里有一些其他的选择。

  1. 加里马提斯 (西班牙语 "叽叽喳喳 "的意思)似乎是一个有意见的、比较流行的Java的URL规范化库。源代码可以在 github.comsmolagalimatias.

    galimatias是由于对java.net.URL和java.net.URI的失望而开始的。它们对于基本的用例来说都很好,但对于其他用例来说却严重损坏。

  2. github.comsentricurl-normalization 库提供了另一种(在我看来是不寻常的)方法,它将域名部分反过来,例如 "com.stackoverflow "而不是 "stackoverflow.com"。

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


0
投票

那么 java.net.URL 设置()?

© www.soinside.com 2019 - 2024. All rights reserved.