Итак, у меня есть некоторый Java-код, который использует Jakarta HttpClient, например:
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 и т. Д., Поэтому необходимо избегать всего остального.