【问题标题】:getHeaders method from SoapHandler interface来自 SoapHandler 接口的 getHeaders 方法
【发布时间】:2013-07-25 16:58:06
【问题描述】:

您能否解释一下 SOAPHandler 接口中的方法 getHeaders 究竟应该做什么?

http://docs.oracle.com/javaee/5/api/javax/xml/ws/handler/soap/SOAPHandler.html#getHeaders%28%29

我不确定它是否会创建额外的标头,或者它是否应该告诉运行时消息应该具有哪些标头。

我一直在网上搜索详细信息,但找不到任何信息。我认为它是如此基本和明显,以至于不需要文档 LOL :-)

谢谢

【问题讨论】:

    标签: java web-services soap jax-ws soaphandler


    【解决方案1】:

    您要查找的描述可以在 JAX-WS 2.2 规范中标题为“10.2.1 SOAP mustUnderstand Processing”的部分中找到。入站消息需要在正常处理程序处理开始之前发生的附加处理步骤。基本上,从getHeaders 返回的QName 实例集允许处理程序为节点理解的全套SOAP 标头做出贡献(完整集的其他贡献者在规范中记录)。如果入站 SOAP 标头包含值为 1truemustUnderstand 属性,则如果无法将该标头标记为已理解,则会生成异常。

    【讨论】:

      【解决方案2】:

      编辑:显然我错了,进一步阅读后我必须同意,因此请忽略这一点。

      SOAP 消息是一个 HTTP 请求。 HTTP 请求可以有许多不同的标头作为消息的一部分(例如,在 SOAP 1.1 中有一个称为 SOAPAction 的标头,它可以包含服务和操作的名称)。 getHeaders 函数返回请求附带的所有标头 QName 的列表,因此在前面的示例中,您将获得一个包含值为“SOAPAction”的元素的列表。

      【讨论】:

      • 但是由于请求来自外部代理并且 getHeaders 方法是由我实现的,我以前如何知道请求附带的 QName 的完整列表?为什么我需要实施它?我不明白它首先存在的原因。
      • 另一个问题:假设请求/响应消息交换模式(其中客户端是源) ?
      • 投了反对票,因为这与 HTTP 或 HTTP 标头无关,SOAP 消息不需要使用 HTTP 作为传输,并且getHeaders 返回的内容描述是错误的。跨度>
      猜你喜欢
      • 2020-06-18
      • 2017-10-15
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-25
      • 2019-10-16
      相关资源
      最近更新 更多