【发布时间】:2019-01-08 19:21:52
【问题描述】:
我正在尝试从 SOAP 调用中接收一些信息。我的端点被成功调用,但我的类中的信息是null。只有将<XYZFullDesc/<order_no>更改为<ns2:XYZFullDesc/<ns2:order_no>才能收到信息,但我需要不做任何更改接收XML。
我的 Soap 服务需要接收的整个 XML:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header/>
<S:Body>
<ns2:publishXYZFullModifyUsingXYZFullDesc xmlns:ns2="http://www.oracle.com/retail/igsla/integration/services/XYZFullPublishingService/v1">
<XYZFullDesc xmlns="http://www.oracle.com/retail/integration/base/bo/XYZFullDesc/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<order_no>2445460</order_no>
</XYZFullDesc>
</ns2:publishXYZFullModifyUsingXYZFullDesc>
</S:Body>
</S:Envelope>
我目前的 XSD 是:
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:tns="http://www.oracle.com/retail/igsla/integration/services/XYZFullPublishingService/v1"
targetNamespace="http://www.oracle.com/retail/igsla/integration/services/XYZFullPublishingService/v1"
elementFormDefault="qualified">
<s:element name="publishXYZFullModifyUsingXYZFullDesc">
<s:complexType>
<s:sequence>
<s:element name="XYZFullDesc" type="tns:XYZFullDesc"/>
</s:sequence>
</s:complexType>
</s:element>
<s:complexType name="XYZFullDesc">
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="order_no" type="s:string"/>
</s:sequence>
</s:complexType>
</s:schema>
我的 Spring 端点:
private static final String NAMESPACE_URI = "http://www.oracle.com/retail/igsla/integration/services/XYZFullPublishingService/v1";
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "publishXYZFullModifyUsingXYZFullDesc")
@ResponsePayload
public void receberPedidoRequest(@RequestPayload PublishXYZFullModifyUsingXYZFullDesc request) {
// code...
}
那么,ns2 的存在/不存在如何解释这种行为?上面的 XML 怎么读不做任何改动?
【问题讨论】: