美文网首页
第三十四章 添加和使用自定义标题元素 - 支持的标头元素

第三十四章 添加和使用自定义标题元素 - 支持的标头元素

作者: Cache技术分享 | 来源:发表于2024-06-20 07:50 被阅读0次

    第三十四章 添加和使用自定义标题元素 - 支持的标头元素

    支持的标头元素

    IRIS 网络服务和客户端自动支持 WS-AddressingWS-Security 标头,但不自动支持其他标头。

    要在 Web 服务或客户端中指定支持的标头元素,请向类添加 XData 块并指定类参数 USECLASSNAMESPACESXData 块列出了支持的元素。类参数使 WSDL 包含适用的类型。请参阅指定支持的标头元素。

    标头元素和 WSDL

    Web 服务的 WSDL 公布了该 Web 服务所支持的标头元素以及与该 Web 服务通信的 Web 客户端所允许的标头元素。

    对于 IRIS Web 服务,生成的 WSDL 可能不包含有关 SOAP 标头元素的信息:

    • 如果通过设置 HeadersOut 属性手动添加 SOAP 标头,请确保按照指定支持的标头元素中所述在 XData 块中声明它们。同时在 Web 服务类中将类参数 USECLASSNAMESPACES 指定为 1

    如果遵循这些步骤,WSDL 将包含所有适用信息。否则,WSDL 将不包含所有适用信息,必须将 WSDL 保存到文件中,并根据需要手动编辑它。

    • 如果通过设置 SecurityOut 属性来添加 WS-Security 标头(如“保护 Web 服务”中所述),WSDL 将不包含所有需要的信息。(这是因为 WSDL 是在编译时生成的,而标头是在运行时添加的。)在这种情况下,请将 WSDL 保存到文件中,并根据需要手动编辑它。

    出于多种原因,使用 WS-Policy 添加 WS-Security 元素更简单、更容易。使用 WS-Policy,生成的 WSDL 包含所有需要的信息。

    • 在其他情况下,生成的 WSDL 包含所有需要的信息。

    请注意,W3C 规范并不要求 Web 服务提供生成的 WSDL

    必需的标题元素

    如果给定的报头元素指定 mustUnderstand=1,则该元素被视为强制元素,接收者必须支持它。除非接收者识别所有强制报头元素,否则接收者无法处理该消息。

    按照 SOAP 标准, 会拒绝包含必需但不受支持的标头元素的 SOAP 消息。具体来说,如果 Web 服务或客户端收到包含 mustUnderstand=1 的标头元素的消息,并且该服务或客户端不支持该标头元素,则该服务或客户端会发出 SOAP 错误,然后忽略该消息。

    定义自定义标题元素

    如果使用 SOAP 向导根据给定的 WSDL 创建 Web 服务或 Web 客户端,系统将生成类来根据需要表示任何标题元素。

    如果手动创建 Web 服务或客户端,则必须手动定义类来表示任何自定义标头元素。具体操作如下:

    1. 对于每个自定义标题元素,创建 %SOAP.Header 的子类。
    2. 指定 NAMESPACE 参数来指示标头元素的命名空间。
    3. 指定 XMLNAME 参数来指示标题元素的名称。
    4. 在子类中,定义属性以包含您需要的标头信息。默认情况下,属性将投影到 <Header> 元素内的元素。
    5. 可选地指定 XMLFORMAT 参数,该参数控制此标头元素的格式。默认情况下,标头元素始终采用文字格式(而不是 SOAP 编码)。
    Class Scenario1.MyHeaderElement Extends %SOAP.Header
    {
    
    Parameter NAMESPACE = "https://www.myheaders.org";
    
    Parameter XMLNAME = "MyHeader";
    
    Property Subelement1 As %String;
    
    Property Subelement2 As %String;
    
    }
    

    此标头元素在 SOAP 消息中显示如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <SOAP-ENV:Envelope [parts omitted]>
      <SOAP-ENV:Header>
        <MyHeader xmlns="https://www.myheaders.org"
                         xmlns:hdr="https://www.myheaders.org">
          <Subelement1>abc</Subelement1>
          <Subelement2>def</Subelement2>
        </MyHeader>
      </SOAP-ENV:Header>
      <SOAP-ENV:Body>
       [omitted]
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    
    

    相关文章

      网友评论

          本文标题:第三十四章 添加和使用自定义标题元素 - 支持的标头元素

          本文链接:https://www.haomeiwen.com/subject/dyyccjtx.html