2010-07-29 165 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等語言實現。