したがって、次のような Jakarta HttpClient を使用する Java コードがあります。
URI aURI = new URI( "http://host/index.php?title=" + title + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery());
問題は、title
アンパサンド (&) が含まれている場合、それらはパラメーター区切り文字と見なされ、リクエストがうまくいかないことです...そして、それらを URL エスケープされた同等の に置き換えると、%26
これは getEscapedPathQuery() によって に二重にエスケープされ%2526
ます。
私は現在、基本的に後で損傷を修復することでこれを回避しています:
URI aURI = new URI( "http://host/index.php?title=" + title.replace("&", "%26") + "&action=edit" );
GetMethod aRequest = new GetMethod( aURI.getEscapedPathQuery().replace("%2526", "%26"));
しかし、これを行うためのより良い方法が必要ですよね? タイトルには、予測できない UTF-8 文字などをいくつでも含めることができるため、他のすべてをエスケープする必要があることに注意してください。