使用Spring Boot将SOAP标头连同主体一起发送到SOAP服务器

问题描述 投票:0回答:1

作为SOAP新手,我正在遵循Spring boot - Server did not recognize the value of HTTP Header SOAPAction中给出的相同教程。可以在https://howtodoinjava.com/spring-boot/spring-soap-client-webservicetemplate/amp/

中找到该教程

目前,我能够发送带有所需请求的SOAP有效负载。服务器正在回应说我尚未认证。

因此,我尝试发送带有身份验证详细信息的SOAP标头以及此SOAP有效负载。参见以下示例。

首先,我已成功设法使本教程正常工作。发送了SOAP Action请求并收到了响应。

已发送请求[SaajSoapMessage {http://server.windeed.co.za/windeedengine/} CheckDeedsOfficeStatus]

响应是我没有正确验证/发送验证详细信息。因此,我创建了带有所有必要详细信息的身份验证对象,以封送并成为SOAP消息的一部分。

我尝试了以下方法:

ObjectFactory of = new ObjectFactory();
WinDeedCredentials cred = of.createWinDeedCredentials();

cred.setUsername("Test");
cred.setPassword("Test123");
cred.setCompany("COMPANY");
cred.setRequester("SOAP");
CheckDeedsOfficeStatus cdo = of.createCheckDeedsOfficeStatus();
CheckDeedsOfficeStatusResponse dr = (CheckDeedsOfficeStatusResponse)sc.callWebService(cdo,"http://server.windeed.co.za/windeedengine/CheckDeedsOfficeStatus");

目标是实现这一目标:

POST /windeedengine3/client.asmx HTTP/1.1
Host: server.windeed.co.za
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://server.windeed.co.za/windeedengine/CheckDeedsOfficeStatus"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <WinDeedCredentials xmlns="http://server.windeed.co.za/windeedengine/">
      <Username>string</Username>
      <Password>string</Password>
      <Company>string</Company>
      <Requester>string</Requester>
    </WinDeedCredentials>
  </soap:Header>
  <soap:Body>
    <CheckDeedsOfficeStatus xmlns="http://server.windeed.co.za/windeedengine/" />
  </soap:Body>
</soap:Envelope>

当前,由于缺少身份验证详细信息,所以我被告知我没有正确进行身份验证。

预期结果是来自服务器的正确响应:联机或脱机。正确的方法是什么?

spring spring-boot soap soap-client
1个回答
0
投票

我什至忘了重新讨论这个话题。问题已解决,但我没有立即提供详细信息,需要旅行以访问它们。

在进行Web服务调用之前=> sc.callWebService,重要的是注入SOAP标头详细信息。我将SOAP UI中的xml标头注入了代码中。中提琴!有效。以前,MarshallSendAndReceive方法仅与SoapActionCallback方法一起使用。如果我还记得,我将其修改为在进行Web服务调用之前使用WebServiceMessageCallback和xml标头的显式定义。

© www.soinside.com 2019 - 2024. All rights reserved.