2016-02-13 3 views
1

У меня работает приложение для весенних загрузок, которое, похоже, создает проблемы с конкретным запросом. Запрос представляет собой POST, содержащий двоичные данные, однако, когда JavaServlet (или кот?) Получает его, он не знает, как расшифровать его, чтобы он производит следующее сообщение об ошибке:Spring - POST с двоичным файлом - Ошибка декодирования символов

org.apache.tomcat.util.http.Parameters : Character decoding failed. Parameter [0 *H÷ 
      0 UUS1#0!U 
S§¥ø§'ôZúöf¿(å_Ý«"õéñ¤åyl¢Ýg0izt¡÷~ÅüvDt¿Äû¨Ë å[email protected]òÔÊdJRBq%2¶ úFsX] with value [] has been ignored. Note that the name and value quoted here may be corrupted due to the failed decoding. Use debug level logging to see the original, non-corrupted values. 

Я знаю о следующий конфиг, который, кажется, некоторое влияние на него, но я не знаю, что установить значение на пост, который содержит двоичный:

server.tomcat.uri-encoding=UTF-8 #I've also tried UTF-16 

Спасибо за ваше время.

EDIT (ОТВЕТ): Вы можете исправить это с помощью апачского прокси со следующей конфигурацией:

<Location /endpoint/> 
    ProxyPass https://127.0.0.1:443/endpoint/ 
    RequestHeader unset Content-Type 
    RequestHeader set Content-Type "application/octet-stream" 
</Location> 

незаходимым Content-Type является необязательным, то набор должен переопределить я считаю. Однако, я не на 100%, поле не учитывает регистр. Возможно добавление RequestHeader unset content-type.

+0

Каково значение заголовка Content-Type запроса? –

+0

application/x-www-form-urlencoded – azdragon2

ответ

4

application/x-www-form-urleconded не является подходящим типом контента для двоичных данных. Tomcat полагает, что вы добавили в него форму и пытается проанализировать имена и значения полей из двоичных данных. Вы должны использовать тип содержимого, подходящий для двоичных данных. application/octet-stream - один вариант.

+0

У меня, к сожалению, нет контроля над запросом. Он поставляется в виде предварительно упакованного кода от Adobe. Есть ли способ, которым Spring мог бы интерпретировать этот запрос как поток октета, когда он его получает? – azdragon2

+0

Возможно, вы сможете использовать фильтр, который обертывает запрос и изменяет тип содержимого, но я не могу точно сказать, основываясь на предоставленной вами информации. Возможно, вы можете обновить вопрос с помощью более подробной информации о том, когда именно при обработке запроса возникает ошибка? Столбец, если он есть, был бы полезен. –

+0

Я пробовал делать фильтр (обертку), и я пробовал делать сервлет, но, к сожалению, он не поймал ошибку во времени. Мне пришлось создать второй прокси перед ним (в python), чтобы решить проблему. Ваш ответ правильный, так как это было проблемой, поэтому я собираюсь отметить его как ответ и поставить свою реализацию python как редактирование для других, если им приходится иметь дело с этой проблемой для Adobe Access. – azdragon2

Смежные вопросы