Невозможно обработать составные / отчетные данные в Spring 5.0.1.Это только обнаружение multipart / form-data в запросе - PullRequest
0 голосов
/ 17 мая 2018

Я использую Spring 5.0.1 и сервлет 3.1.0

Когда пользователь отправляет multipart / form-data в запросе, Spring может проанализировать запрос и сделать из него части.
request.getParts () будет иметь предоставленные множественные числа.

Но когда пользователь отправляет multipart / report (content-type), spring не обрабатывает этот запрос должным образом.
Это не дает никаких исключений, кроменичего не хранит в частях запроса.
request.getParts () вернет пустой массив.

Есть ли какая-либо конфигурация, которая должна быть выполнена, чтобы Spring анализировал любые виды многокомпонентных данных.

Размещение моего кода и запроса полезных данных ниже:

REST API не имеет никаких ограничений на тип контента.Он принимает только запрос и ответ в качестве параметров, как показано ниже:

@RequestMapping (value = "/rest/external/integration/{serviceName}", method = RequestMethod.POST)   
public void executeAssemblyExternal (HttpServletRequest request, 
            HttpServletResponse response, @PathVariable String serviceName)  throws Exception    
{        
      Parts[] requestParts = request.getParts();   
}

Заголовок типа содержимого, отправляемый с запросом:
Тип содержимого multipart / report;Report-Type = расположение-уведомление;border = "---- = _ Part_82_645653877.1526452736757"

Составные данные, отправляемые в REST API, имеют следующий вид:

------ = _ Part_82_645653877.1526452736757 Content-Тип: текстовый / простой;charset = us-ascii Content-Transfer-Encoding: 7bit

MDN для - ID сообщения: <1088014046.24.1526452734879@MCBKUM03.eur.ad.sag> От: SenderAS2 Кому: ReceiverAS2 Получено в: 2018-05-16 в 12:08:56 (IST) Статус: обработано Комментарий: это не гарантия того, что сообщение было полностью обработано или понято получающим переводчиком

------ = _ Part_82_645653877.1526452736757 Содержимое-Тип: сообщение / расположение-уведомление Content-Transfer-Encoding: 7bit

Reporting-UA: Сервер интеграции webMethods Оригинал-Получатель: rfc822;ПолучательAS2 Конечный получатель: rfc822;Идентификатор исходного сообщения ReceiverAS2: <1088014046.24.1526452734879@MCBKUM03.eur.ad.sag> MIC полученного контента: SezQZhP0aSchqB1zCO0Dq4J0u3U =, sha1 Расположение: автоматическое действие / MDN-отправлено-автоматически;обработано

------ = _ Part_82_645653877.1526452736757 -

1 Ответ

0 голосов
/ 22 мая 2018

Как упомянул Deinum в комментарии, сервлет не может обрабатывать многокомпонентные запросы, кроме multipart / form-data. Итак, Написал пользовательский dispatcherServlet, в котором запросы, имеющие заголовок Content-Type как multipart с подтипом, отличным от form-data, будут исключены из обработки через MultipartResolver.

При выполнении этого request.getInputStream () будет иметь все составные данные, отправленные пользователем. Необходимые действия могут быть выполнены с этим входным потоком на стороне сервера.

...