SOAP响应处理

问题描述:

我有一个SOAP服务,我试图通过WSO2 ESB中的API访问。SOAP响应处理

下面是来自该SOAP服务的方法的响应体。

<?xml version="1.0" encoding="UTF-8"?> 
    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="wom"> 
     <SOAP-ENV:Body> 
      <ns1:OrderResponse> 
      <return> 
       <ResponseHeader> 
        <ResponseCode>1</ResponseCode> 
        <Description>CIR is already exists</Description> 
       </ResponseHeader> 
      </return> 
      </ns1:OrderResponse> 
     </SOAP-ENV:Body> 
    </SOAP-ENV:Envelope> 

而且我按照以下链接访问上面xml响应的Body/OrderResponse。

[https://docs.wso2.com/display/ESB481/Synapse+XPath+Variables#SynapseXPathVariables- $体] [1]下面

是在API的outSequence标签我试图登录的属性值。

<outSequence> 
    <log level="custom"> 
     <property xmlns:ns="http://org.apache.synapse/xsd" 
       name="ErrorCode" 
       expression="$body/ns1:OrderResponse" 
       scope="default" 
       type="STRING"/> 
    </log> 
</outSequence> 

我都尝试$体/ NS1:OrderResponse$体/ OrderResponse但ErrorCode属性在日志中为空。 但是当我尝试$ body可以采取整个响应(这与我之前提到的xml响应相同)。我怎样才能得到OrderResponse?

NS1没有在你的属性定义,请尝试使用:

<property xmlns:ns="http://org.apache.synapse/xsd" 
xmlns:ns1="wom" 
name="ErrorCode" 
expression="$body/ns1:OrderResponse" 
scope="default" 
type="STRING"/> 

如果你想在XML有效载荷,定义你物业类型为“OM”