サーブレットを使ったWebコンテナやAndroidのサーバ間の通信で、日本語や( ) { } [ ] < > ! # $ % & " ' ` ^ ~ = \ | ; : + / ? , などの禁則文字をURLエンコーディングする際、java.net.URLEncoderを使って行うと上手く変換されません。
サーブレットを使った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 コメント:
コメントを投稿