ste*_*vey 2 xsd web-services soapui xsd-validation
我正在开发一个Web服务SOAP,我已经定义了我的xsd模式和wsdl文件,我想comment通过修复他的最大长度来验证元素(其类型是字符串).但是当我使用SoapUI验证请求时,在我看来xsd架构不会验证字符串最大长度.
以下是我的xsd架构的语法:
<xsd:element name="comment" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
Run Code Online (Sandbox Code Playgroud)
谁知道为什么?提前致谢.
SOAPUI正确验证SOAP请求,xsd但是你必须进行有目的的验证选择validate选项,右键单击SOAP Request窗口(如上图所示),如果直接发送请求而不验证它,SOAPUI只是发送请求,即使它是一个坏的形成,xml因为SOAPUI是一个测试工具,你可能想要故意发送一个错误的请求来测试你的WS.
我在一个样本maxLength <restriction>中<xs:string>得到了以下结果(我正在使用SOAPUI 4.5.2):

要做到这一点,我使用以下wsdl:
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:impl="sample:wsdl"
xmlns:dss="sample:schema"
targetNamespace="sample:wsdl" name="dss">
<!-- Schema Type Definitions -->
<types>
<xs:schema xmlns:dss="sample:schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="sample:schema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<!-- COMMON PROTOCOL STRUCTURES -->
<xs:element name="comment" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
</types>
<!--Messages-->
<message name="CommentRequest">
<part name="CommentRequest" element="dss:comment"/>
</message>
<!-- PortTypes -->
<portType name="SOAPport">
<operation name="doComment">
<input message="impl:CommentRequest"/>
<output message="xs:anyType"/>
</operation>
</portType>
<!-- Bindings -->
<binding name="SOAPBinding" type="impl:SOAPport">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="doComment">
<soap:operation/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<!--Service definition-->
<service name="doCommentService">
<port name="dssPortSoap" binding="impl:SOAPBinding">
<soap:address location="http://testing.stackoverflow.answer"/>
</port>
</service>
</definitions>
Run Code Online (Sandbox Code Playgroud)
您可以在wsdlCommentRequest中看到以下架构maxLength <restriction>:
<xs:schema xmlns:dss="sample:schema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="sample:schema" elementFormDefault="qualified"
attributeFormDefault="unqualified">
<!-- COMMON PROTOCOL STRUCTURES -->
<xs:element name="comment" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
然后我从中创建一个新的SOAPUI项目wsdl并添加一个SOAP请求,如果我输入一个超过20个字符的字符串<comment/>并按下右键单击SOAP Request窗口并选择Validate it给出第一张图片中显示的错误消息:

希望这可以帮助,
| 归档时间: |
|
| 查看次数: |
5500 次 |
| 最近记录: |