DataPower中的Soap Action和子字符串

时间:2015-02-23 04:41:17

标签: xslt ibm-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并将其发送给新的更好的方法是什么。仅将版本从版本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>

3 个答案:

答案 0 :(得分:1)

看起来像是XPath函数之后的标准substring-before和substring-job的作业。

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

答案 1 :(得分:0)

我认为您也可以通过在标题重写操作中使用url重写策略来实现此目的。

答案 2 :(得分:0)

您只需使用标题/参数选项卡添加,您可以在其中添加标题名称和值。