Java / Spring: добавьте несколько мыльных заголовков в getWebServiceTemplate (). MarshalSendAndReceive - PullRequest
0 голосов
/ 23 мая 2019

Я новичок в Java и следую этому руководству https://spring.io/guides/gs/consuming-web-service/, чтобы вызвать сервис Soap (.net asmx) из Java Api. Когда я пытаюсь добавить заголовки в Soap Request, он возвращает исключение Java Null Pointer. Если я не предоставлю HeaderComposingCallback, он сможет вызвать службу.

Позвоните на веб-сервис:

ValidateResponse response = (ValidateResponse) getWebServiceTemplate().marshalSendAndReceive(
                    "http://somewhere.com/service.asmx",
                    request, new HeaderComposingCallback());

Реализация WebServiceMessageCallback:

public class HeaderComposingCallback implements WebServiceMessageCallback {

private PrincipalIdentity prinIdentity;
private ProductIdentity prodIdentity;

public HeaderComposingCallback() {

}

@Override
public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {

    ((SoapMessage) message).setSoapAction("Validate");
    SoapHeader soapHeader = ((SoapMessage) message).getSoapHeader();

    try {

        prinIdentity.setRequestorId("value");
        ..

        prodIdentity.setAppId("value");
        ..

        JAXBContext context = JAXBContext.newInstance(PrincipalIdentity.class, ProductIdentityHeader.class);

        Marshaller marshaller = context.createMarshaller();
        marshaller.marshal(prinIdentity, soapHeader.getResult());
        marshaller.marshal(prodIdentity, soapHeader.getResult());

    } catch (JAXBException e) {
        throw new IOException("error while marshalling.");
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...