#gwt #url-encoding
#gwt #url-кодирование
Вопрос:
Я вызываю сервлет из клиентского кода GWT, используя RequestBuilder.
В запросе (сообщении) я передаю некоторые данные запроса
builder.sendRequest(postData, new RequestCallback()….
В postData у меня есть параметр URL, называемый «returnToUrl»
Этот «returnToUrl» имеет параметры url и будет выглядеть следующим образом
returnToUrl = "http://my.server/add?pn=aamp;pd=b";
Когда я передаю его сервлету, вторые (и более поздние) параметры (pd=b в моем примере) интерпретируются как параметры запроса для сервлета, а не как часть параметра returnToUrl, и, следовательно, теряются….
Он кодируется по URL, но, конечно, это не меняет символы ‘?’ и ‘amp;’.
Любая помощь высоко ценится!
Комментарии:
1. Это зависит от вашего определения кодировки URL. Например, JavaScript предоставляет два метода, encodeURI (который кодирует только недопустимые символы URI) и encodeURIComponent (который кодирует строку во что-то, что может быть использовано в качестве параметра).
2. Я использую URL.encode() в GWT, что соответствует вашему первому примеру. Существует ли класс / привязка GWT для encodeURIComponent? Если нет, я напишу JSNI, чтобы сделать это…
Ответ №1:
Вам нужно закодировать свои данные в GWT.
Взгляните на класс URL, чтобы сделать это: http://google-web-toolkit.googlecode.com/svn/javadoc/2.4/com/google/gwt/http/client/URL.html
особенно в encodeQueryString, который в основном имеет то же поведение, что и encodeURIComponent в javascript.
Комментарии:
1. Отлично, это работает. Спасибо, Дэниел. Я думаю , что я просматривал более старую версию Javadoc для URL. В любом случае я не видел этого метода, и это спасает жизнь… еще раз спасибо.