Весной загрузочный клиент SOAP веб-службы не читает вложения - PullRequest
0 голосов
/ 30 ноября 2018

Я занимаюсь разработкой клиента веб-службы SOAP с весенней загрузкой, который вызывает службу SOAP, и эта служба SOAP возвращает тело ответа с вложением.Вложение будет вложением MTOM.

С моим кодом я могу прочитать тело ответа веб-службы SOAP, но не смог получить содержимое вложения.

Я использую Spring Boot 1.5.2 имои конфигурации выглядят как показано ниже.

@Bean(name="myMarshaller")
    public Jaxb2Marshaller myMarshaller() {
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setPackagesToScan(new String[] {"com.mypack.header",
                "com.soapservice.schema",               
                "com.soapservice.exception"});
        marshaller.setMtomEnabled(true);
        return marshaller;
    }

@Bean(name = "myAppJaxbContext")
    public JAXBContext myAppJaxbContext() throws XmlMappingException
    { 
        return myMarshaller().getJaxbContext();

    }

@Bean(name = "messageFactory")
    public SaajSoapMessageFactory messageFactory() 
    {
        return new SaajSoapMessageFactory();
    }

@Bean(name = "myAppWSTemplate")
    public WebServiceTemplate myAppWSTemplate() throws SOAPException
    {
        WebServiceTemplate webServiceTemplate = new WebServiceTemplate();
        webServiceTemplate.setMessageFactory(messageFactory());
        webServiceTemplate.setCheckConnectionForFault(false);
        webServiceTemplate.setCheckConnectionForError(false);
        webServiceTemplate.setUnmarshaller(myMarshaller());
        webServiceTemplate.setMarshaller(myMarshaller());

        return webServiceTemplate;
    }

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

<mySoapResponse xmlns:e="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:dime="http://schemas.xmlsoap.org/ws/2002/04/reference/" xmlns:fn40="http://www.filenet.com/soapservice/schema"  xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:d="http://www.w3.org/2001/XMLSchema">
         <FiledetailResponse retrievalName="myapp.pdf" totalSize="177712">
            <Content>
               <Binary>
                  <xop:Include href="cid:v1-1234abc@mtom.p128ae.myapp.com"/>
               </Binary>
            </Content>
         </FiledetailResponse>
      </mySoapResponse>

С указанным выше телом ответа я получу вложение в виде MIME-типа.Но при попытке демонтировать это тело ответа content.getBinary () всегда будет пустым.Но когда я печатаю ответ SOAP, я вижу двоичное вложение.

Я что-то упустил в своей конфигурации.Есть ли пример для клиента Spring Boot Webservice для составного SOAP.

...