2012-06-18 1 views
1

Я признаю, что мы делаем что-то глупо, используя форму, закодированную в URL-адресе, чтобы отправить XML-документ в одну переменную (переводы строк, преобразованные в пробелы и содержимое, экранированное), но это разместить клиента, который может отправлять только данные формы.@FormParam усечен для встроенного ' в содержании Apache Wink

Когда одна из строк в экранированном содержимом XML содержится апостроф

' 

синтаксическое тела запроса останавливается и не возвращает остаток от переменного. Конечно, это создает проблему, потому что полученный нами XML-документ является неполным.

Каков правильный способ передачи апострофа в параметре формы, когда ресивер использует библиотеки JAX-RS Apache Wink?

линия как это:

 <decisionspace title="Traffic Study" details="Discuss the Rivertowns Square projects impact on traffic" /> 

работает отлично, но линия, как это:

 <decisionspace title="Traffic Study" details="Discuss the Rivertowns Square project&apos;s impact on traffic" /> 

обрезается после "площади проекта"

Характеры быть сбежавшие являются:

"&" becomes "&amp;" 
"\"" (double quote) becomes "&quot;" 
"'" (single quote) becomes "&apos;" 
"<" becomes "&lt;" 
">" becomes "&gt;" 
bytes < 0x20 or > 0x7f" become "&#nnn;" 

ответ

1

После некоторого дополнительного копания, кажется, что параметры формы хранятся в MultivaluedMap (formParameters), и амперсанд интерпретировался как разделитель значений (как в строке запроса), поэтому вызов formParameters.get (getName()) возвращается только к этой позиции (отображение значения formParameter показывает значения mulitple, разделенные запятыми в toString()). Я подозреваю, что когда тело запроса было интерпретировано для заполнения карты formParameter, оно анализировало значение как строку запроса и разделило содержимое на каждом амперсанде.

Уверен, что у меня есть другой механизм эвакуации, поэтому амперсанд - это% 26 или что-то такое, что он берет всю строку как одну строку, которую я буду устанавливать.

Я предполагаю, что все зависит от перспективы анализатора в любом контексте и для параметров формы, которые, по-видимому, представляют собой форматирование строки запроса.

+0

В ретроспективе приложение MediaType/x-www-form-urlencoded должно было предоставить ключ ... –

+0

Использование URLEncoder.encode (requestValue, «UTF-8») на клиенте и URLDecoder.decode (formParamValue, «UTF-8») на сервере сделал трюк. –

0

Параметры формы разделены с использованием &. Вы должны избегать содержимого так же, как и для URL-адресов, а не для XML/HTML.