2012-07-02 47 views
0

我在Datapower中有一個WS Proxy。客戶端和後端都是HTTP。我請求包含有類似值的肥皂頭: WSA:行動 WSA:MESSAGEID WSA:的ReplyTo 時間戳來自請求的Datapower Soap Envelope Header值

犯規需要所有這些值的後端,所以他們發送cnverted請求傳遞給後臺之前被剝離的顯然這些不在我從後端獲得的迴應中。現在,當我從Datapower向客戶端發回響應時,我需要將所有這些值返回到響應SOAP標題中。 A

新創建的時間戳,5分鐘後過期。 動作 消息ID 回覆

有沒有什麼辦法讓他們回來。我不想從xslt那樣做,因爲我相信Datapower有一些內置的支持來處理這個問題。

回答

0

我只是將整個SOAP-header節點集存儲在上下文變量中,並將其替換爲響應規則。當然,除非後端添加或修改特定值。在這種情況下,您可以選擇要恢復的內容。

0

請在下面的代碼中找到tp remove header並將其移動到上下文變量。 此外,您可以使用該上下文變量值將其放回。

XSl1:要保存用戶名和密碼背景variable`

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:dp="http://www.datapower.com/extensions" 
xmlns:dpconfig="http://www.datapower.com/param/config" 
extension-element-prefixes="dp date dpconfig" exclude-result-prefixes=" dp dpconfig "> 
<xsl:template match="/"> 
<xsl:variable name = "User"> 
<xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Header']/*[local-name()='Security']/*[local-name()='UsernameToken']/*[local-name()='Username']/text()"/> 


</xsl:variable> 
<xsl:variable name = "PWD"> 
<xsl:value-of select="/*[local-name()='Envelope']/*[local-name()='Header']/*[local-name()='Security']/*[local-name()='UsernameToken']/*[local-name()='Password']/text()"/> 
</xsl:variable> 
<xsl:message dp:priority="debug"> 
    User name : <xsl:value-of select="$User"/> 
<xsl:message dp:priority="debug"> 
    Password : <xsl:value-of select="$PWD"/> 
</xsl:message> 
<dp:set-variable name="'var://context/Test/User'" value ="string($User)"/> 
<dp:set-variable name="'var://context/Test/Pws'" value ="string($PWD)"/> 
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" > 
<soapenv:Header> 
</soapenv:Header>   
    <soapenv:Body> 
<xsl:copy-of select="/*[local-name()='Envelope']/*[local-name()='Body']/*" /> 
</soapenv:Body> 
</soapenv:Envelope> 
</xsl:template> 
</xsl:stylesheet> 

XSl2:重新添加用戶名和密碼返回到SOAP。

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dp="http://www.datapower.com/extensions" 
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" 
xmlns:dpconfig="http://www.datapower.com/param/config" 
extension-element-prefixes="dp dpconfig soapenv" exclude-result-prefixes="dp dpconfig"> 
    <xsl:template match="@*|node()"> 
<xsl:copy> 
<xsl:apply-templates select="@*|node()"/> 
</xsl:copy> 
</xsl:template> 
    <xsl:template match = "*[local-name() = 'Header']"> 


<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> 
<soap:appid xmlns:soap="http://na.az.com/soaplatform">?</soap:appid> 
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
<wsse:UsernameToken> 
<wsse:Username> 
<xsl:value-of select="dp:variable('var://context/Test/User')"/> 
</wsse:Username> 
<wsse:Password> 
<xsl:value-of select="dp:variable('var://context/Test/Pws')"/> 
</wsse:Password> 
    </wsse:UsernameToken> 
</wsse:Security> 
</soapenv:Header> 
</xsl:template> 
</xsl:stylesheet>