Как получить URL-адрес POST с параметрами из HttpServletReqest в ServletFilter? (Для прокси-приложения)

Из-за ограничений браузера мне нужно использовать прокси, чтобы карта openlayers работала.

Объект javascript OpenLayers.ProxyHost обрабатывает генерацию URL-адреса, например:

http://webhost:8080/app/proxy/?url=http://WFS_server/options/...

Некоторые запросы будут GET, а другие POST.

Я написал фильтр сервлета, который будет получать запрос, а затем использовать общедоступный HttpClient для отправки его на хост, указанный параметром «url».

Все работает для GET, но у меня возникают трудности с получением значения параметра «url» для POST.

Согласно javadoc, который я вижу в eclipse, это должно быть request.getRequestURI(), но это возвращает только значение сообщения за вычетом значения параметра URL (т.е. http://webhost:8080/app/proxy/)

На самом деле единственный способ получить данные — это вызвать метод request.toString() и проанализировать URL-адрес.

Я выполняю развертывание на сервере Jetty 6.1.11, поэтому мне интересно, может ли это быть ошибка Jetty или я что-то упустил, где получить эту информацию?


person Community    schedule 16.05.2009    source источник


Ответы (3)


Если параметр url отправляется в теле POST, вы можете использовать:

request.getParameter( "url" );
person mtpettyp    schedule 16.05.2009
comment
Я забыл упомянуть, что этот подход будет работать как для запросов POST, так и для GET. - person mtpettyp; 16.05.2009

Это потому, что getRequestURI дает вам именно то, что вы просили — URI.

В вашем сообщении параметр URL НЕ является частью URI. Следовательно, КЭД и т. д.

Итак, проще говоря, вам нужно написать процедуру для создания URL-адреса самостоятельно. Просьба здесь не поможет.

person Will Hartung    schedule 16.05.2009

Для POST вам нужно будет использовать что-то похожее на приведенное ниже, чтобы получить отдельные параметры.

Map params = request.getParamterMap();
String value = (String) params.get("url");
person Taylor Leese    schedule 16.05.2009