2012-04-12 3 views
1

oauthのサーバーの署名ベースと一致する必要があります。このパーセントは署名前にすべてをエンコードします。Uriは予約されていない文字を含むすべてをエンコードします

Urlencoder.encode(base、UTF-8)では、空白と+が正しくエンコードされていますが、Uri.encodeを使用すると、未予約の文字( "_- !.〜 '()*")もエンコードする必要があります。

私自身のユーティリティを書くのは難しいことではありませんが、手動で変更する必要がない場合はうれしいでしょう。これにはすでにユーティリティがありますか?

+0

悲しいことにURLエンコーダはあなたの問題を解決しません。私はこの問題を抱え、カスタムユーティリティを使用しました。 http://www.javapractices.com/topic/TopicAction.do?Id=96 –

+0

を参照して私は恐れていた。まぁ!ありがとうございました。 – HannahMitt

+0

なぜこれをやりたいのですか?他のコンポーネントのバグを回避するには? – daveb

答えて

2

追加のエンコーディングが必要な文字はわずかです。大衆のために:

public static String encode(String base){ 
    String encoded = Uri.encode(base); 
    encoded = encoded.replace("(", "%28"); 
    encoded = encoded.replace(")", "%29"); 
    encoded = encoded.replace("!", "%21"); 
    encoded = encoded.replace("\'", "%27"); 
    encoded = encoded.replace("*", "%2A"); 

    return encoded; 
} 
関連する問題