サーブレットを使ったURLパラメータにはクライアントでURLデコードした値を渡すべきなのだそうです。
しかしAndroidのアプリでのサーブレットとの通信を行う上で、変換しないまま送りたい!って時にjava.net.URLEncoderを使ったら、変換が上手くいきませんでした。
そんな時にApache Commonsのcommons-codecの「URLCodec」を使ったら上手くいったので、メモとして記載したいと思います。
前提条件
- JBoss as 7.1.1 final
- java 1.7.XX
- apache.commons.codec 1.7
- Windows XP Pro 32bit
ダウンロード先
http://commons.apache.org/proper/commons-codec/download_codec.cgiサンプル
以下のように使用します。URLCodec codec = new URLCodec("UTF-8");
try {
//%20は空白であり、Codecでは+になるのでリプレイスしてあげる
///はスラッシュであり、Codecでは%2Fになるのでリプレイスしてあげる
System.out.println(codec.encode(fileName).replace("+", "%20").replace("%2F", "/"));
} catch (EncoderException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
0 件のコメント:
コメントを投稿