0

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

我有

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

我想要它作为

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

我有一个使用如下功能的想法。请建议 1. 如何从标头中对值“getMessage”进行子串化。我想通过保存一个变量来进一步使用它。 2. 修改传入的 SOAPAction 并将其发送新的更好的方法是什么。只有版本从版本 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>
4

3 回答 3

1

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

<xsl:value-of select="concat(
    substring-before($IncomingRequest, 'version10_1'),
    'version11_1',
    substring-after($IncomingRequest, 'version10_1'))"/>
于 2015-02-23T05:21:12.023 回答
0

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

于 2015-03-04T17:59:57.727 回答
0

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

于 2015-03-10T19:25:59.387 回答