小编Gri*_*art的帖子

WSDL肥皂响应验证

我有一个wsdl定义了一个模式:

<xsd:schema elementFormDefault="unqualified" 
            targetNamespace="http://www.xpto.com/xpto">
Run Code Online (Sandbox Code Playgroud)

和元素:

<xsd:element name="insertResponse">
  <xsd:complexType>
    <xsd:sequence>
      <xsd:element maxOccurs="1" minOccurs="1" name="sys_id" 
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="1" name="table" 
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="1" name="display_name"  
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="1" name="display_value"  
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="1" name="status"  
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="0" name="status_message"  
                   type="xsd:string"/>
      <xsd:element maxOccurs="1" minOccurs="0" name="error_message" 
                    type="xsd:string"/>
    </xsd:sequence>
  </xsd:complexType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)

但是当我执行操作并获得响应时,SoapUI说它无效:

<SOAP-ENV:Envelope 
  xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <SOAP-ENV:Body>
      <insertResponse xmlns="http://www.xpto.com/xpto">
         <sys_id>something</sys_id>
         <table>something</table>
         <display_name>number</display_name>
         <display_value>something</display_value>
         <status>something</status>
      </insertResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Run Code Online (Sandbox Code Playgroud)

SoapUI消息(包含易读性的行):

line 4: Expected element 'sys_id' instead of
'sys_id@http://www.xpto.com/xpto' here in element 
insertResponse@http://www.xpto.com/xpto
Run Code Online (Sandbox Code Playgroud)

如果我将WSDL更改为包含elementFormDefault="qualified",则在模式中,相同的响应是有效的.

为什么没有这个响应无效 …

xsd wsdl

0
推荐指数
1
解决办法
5624
查看次数

标签 统计

wsdl ×1

xsd ×1