私の Android プロジェクトでは、Spring-Android で Robospice を使用しています。これは、すべての REST 通信で正常に機能します。ただし、以下のリクエスト クエリ パラメータでは、「=」が「&」に変換されます。このため、リクエストは失敗しています。
クエリ文字列: tags=["keywords:default=hello"]
ログを確認することで、リクエストはライブラリで呼び出すために次のように変換されます。
http://XXX/rest/media/search?token=123&tags=%5B%22keywords:default&hello%22%5D
ここで「=」記号は「keywords:default=hello」で「&」に変換されます
リクエストクラス
ここで tags = String.format("[\"keywords:default=%s\"]", mTag);
@Override
public MVMediaSearch loadDataFromNetwork() throws Exception
{
String search="";
if(!tags.equals(Constants.EMPTY_DATA))
search="&tags="+tags;
return getRestTemplate().getForObject( Constants.BASE_URL+"/media/search?token="+token+search, MVMediaSearch.class );
}
ブラウザで URL を起動すると、エラーが発生します。そして、「&」記号をブラウザで対応する URL エンコードされた値に変更すると、正常に動作します。