自定义SOAP 1.1标头和mustUnderstand属性

时间:2012-03-01 12:15:54

标签: xml web-services soap xsd axis

我的WebService(与SOAP 1.1规范兼容)使用xsd中定义的自己类型的头 MyHeader ,如下所示:

<xs:complexType name="MyHeader">
    <xs:sequence>
       <xs:element name="MyElement1" type="xs:string"></xs:element>
       <xs:element name="MyElement2" type="xs:string"></xs:element>
    </xs:sequence>
</xs:complexType>

不幸的是,“由AXIS 1.4框架”生成的SAOP消息包含 MyHeader 元素,其中包含 mustUnderstand =“0”属性:

<ns:MyHeader soapenv:mustUnderstand="0" xmlns:ns="http://....">
   <ns:MyElement1>XXX</ns:MyElement1>
   <ns:MyElement2>YYY</ns:MyElement2>
</ns:MyHeader>

根据规范,SOAP mustUnderstand 可以添加到每个头文件中。但是,在我看来,如此定义的元素 MyHeader 不能包含此属性,因为生成的XML与XML规范不兼容 - 它不符合 cvc-的XML规则复合型

是否允许将 mustUnderstand 属性添加到此标头实例? AXIS framework 1.4是否正常工作?

1 个答案:

答案 0 :(得分:0)

长话短说,请搜索“从标题中删除mustUnderstand属性”,这样可以为您提供解决方案;默认情况下,不应添加此标头;如果你需要实际使用它,那么我会修改标题部分的模式以包含这些SOAP属性;如果您想查看示例,请查看WS-I Claim schema(删除use =“禁止”)。