在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>
答案 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)
您只需使用标题/参数选项卡添加,您可以在其中添加标题名称和值。