[Java] URI.resolveのバグ!?
URI.resolveって結構便利なんでよく使ってるんですが、一点不便な所を気づきました。不便と言っても、ま、確かに表記上間違っていると言われればそれまでなんですが、ユーザからの入力をそのままresolveする時などは注意が必要です。どんな不便かと言うと、baseのURLにスキーマとホスト名だけ、つまり最後に「/(スラッシュ)」が無い文字列を渡すと、その文字列に、パスがくっ付くんですよね。
言葉で表現しても良く分からないと思うので、下記の例を参照してください。
String good_base = "http://hogehoge.jp/";
String bad_base = "http://hogehoge.jp";
String path = "tegetege/index.html";
URI good_uri = URI(good_base);
URI bad_uri = URI(bad_base);
System.out.println(good_uri.resolve(path));
// 出力 : http://hogehoge.jp/tegetege/index.html
System.out.println(bad_uri_2.resolve(path));
// 出力 : http://hogehoge.jptegetege/index.html
by etrojan2006 | 2007-02-21 15:01 | Java