У меня проблема с клиентом, который отправляет двоичный документ pdf с включенным MTOM в soapservice. Сервис правильно выставлен и обслуживается. Когда я вызываю конечную точку сервера, который предоставляет услугу, все идет нормально, когда я вызываю ту же услугу через «шлюз службы», она отправляет обратно «неверный запрос» после получения всего запроса.
>Accept-Encoding: gzip
>Content-Type: multipart/related;type="application/xop+xml";start-info="text/xml"
>Content-Disposition: attachment
>Accept: text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
>SOAPAction: "http://ws.documents...."
>Content-Type: Multipart/Related; boundary="----=_Part_1_1067527082.1584978884916"; >type="application/xop+xml"; start-info="text/xml"
>Cache-Control: no-cache
>Pragma: no-cache
>User-Agent: Java/1.8.0_222
>Host: service.xx.yy:8080
>Connection: keep-alive
>Content-Length: 105614
....
> This is the trace of the service gateway:
> v^[¹‹‘HTTP/1.1 400 [ISC.0064.9101] Bad Request Connection: close
> Content-Length: 0
Тот же сервисный шлюз является проходным для всех других сервисов без mtom, и все идет нормально. Странная вещь в том, что когда я звоню с soapui с вложением и включенным MTOM через сервисный шлюз, звонок заканчивается правильно. Это ядро кода:
response = (JAXBElement<CreateDocumentsResponseType>) wst.marshalSendAndReceive(uri,request);
- Где wst - это обычный экземпляр WebServiceTemplate с включенным MTOM
- запрос конверт распакован с документом, уже упакованным обработчиком данных.
Перед отправкой сообщения я сделал перехватчик, чтобы установить заголовок запроса с пользовательской аутентификацией.