DataPower 中的 Soap Action 和子字符串

Soap Action and substring in DataPower

在 DataPower 中,我必须读取传入的请求 soap 操作。读取后,我需要提取定界符后的最后一个字符串并将其保存在变量中。然后我需要修改 SoapAction 并为 Datapower 外部的每个请求设置新值。

我有

    SOAPAction="http://service.example.com/version10_1/getMessage"

我想要它

    SOAPAction="http://service.example.com/version11_1/getMessage"

我有一个使用如下函数的想法。请建议 1. 如何从 Header 中提取值 "getMessage"。我想通过保存一个变量来进一步使用它.. 2. 修改传入的 SOAPAction 并发送新的更好的方法是什么。 Only Version 由版本10_1修改为11_1.

 <xsl:template name="HeaderChange">

  <xsl:variable name="IncomingRequest" select="dp:request-header('SOAPAction')"/>

    <xsl:variable name="Mymethod"><xsl:value-of select=(get  the        getMessage    here)/></xsl:variable>

     <dp:set-http-request-header name="SOAPHeader" value="'to modify old SOAPAction'"/> 

      <dp:freeze-headers/>
      </xsl:template>

似乎是标准 substring-before 和 substring-after XPath 函数的工作。

<xsl:value-of select="concat(
    substring-before($IncomingRequest, 'version10_1'),
    'version11_1',
    substring-after($IncomingRequest, 'version10_1'))"/>

我认为您也可以通过在 header 重写操作中使用 url 重写策略来做到这一点。

您可以简单地使用 Headers/Param 选项卡添加,您可以在其中添加 Header 名称和值。