Как можно использовать SOAP с WebClient Spring Reactor? - PullRequest
1 голос
/ 18 апреля 2019

Мне удалось создать SSL-соединение с сервером песочницы и отправить объект в виде сериализованного объекта XML, применив тип содержимого MediaType.APPLICATION_XML.Однако этого недостаточно, поскольку целевой сервис поддерживает только SOAP и ожидает, что сообщение будет правильно упаковано в конверт.


        final var webClient = WebClient.builder()
                .baseUrl(fmdConfiguration.getSinglePackUrl())
                .clientConnector(connector)
                .exchangeStrategies(exchangeStrategies)
                .filter(logResponseStatus())
                .filter(logRequest())
                .build();

        return webClient
                .method(GET)
                .contentType(MediaType.APPLICATION_XML)
                .body(BodyInserters.fromObject(request))
                .retrieve()
                .bodyToMono(SinglePackPingResponse.class);

Ответ службы:

Unable to create envelope from given source because the root element is not named "Envelope"

К сожалению, WebClient не поддерживает тип носителя application / soap + xml.Когда я пытаюсь его использовать, WebClient выдает следующую ошибку:


org.springframework.web.reactive.function.UnsupportedMediaTypeException: Content type 'application/soap+xml;charset=UTF-8' not supported for bodyType=eu.nmvs.SinglePackPingRequest
    at org.springframework.web.reactive.function.BodyInserters.unsupportedError(BodyInserters.java:300)
...