Я пытаюсь подписать запрос документа перед его отправкой, но при получении документа запроса через Document doc = soapMessage.getSOAPPart().getEnvelope().getOwnerDocument();
и передаче его методу подписи, который подпишет его и изменит документ с узлами подписи, я получаю ответ org.springframework.ws.soap.client.SoapFaultClientException: Validation failed with digest wrong.
Но, когда я отлаживаю код с точками останова и устанавливаю точку останова внутри метода doWithMessage
(она заменяется лямбда-выражением во фрагменте ниже) в любой строке до certificationService.signDocument(doc, actionName, "Request", company);
, я получаю правильный ответ, как и ожидалось.
Я что-то упустил или что-то, потому что я не могу найти аналогичные проблемы в Интернете. Я застрял здесь ...
фрагмент кода ниже:
return webServiceTemplate.marshalSendAndReceive(
config.getWebServiceUrl(),
req,
message -> {
try {
SaajSoapMessage saajSoapMessage = (SaajSoapMessage) message;
SOAPMessage soapMessage = saajSoapMessage.getSaajMessage();
Document doc = soapMessage.getSOAPPart().getEnvelope().getOwnerDocument();
saajSoapMessage.setSoapAction(SoapClientConfig.ACTION_BASE_URL + actionName);
certificationService.signDocument(doc, actionName, "Request", company);
soapMessage.saveChanges();
} catch (Exception e) {
e.printStackTrace();
}
});