关于DataPower xslt

时间:2018-09-03 14:26:47

标签: xslt ibm-datapower

这可能有点天真,但我对此事感到震惊

DataPower中有一个特定的<result>元素,通过xslt调用时,我们采用了以下格式(我在某些论坛中发现过)-

<results mode="require-all" multiple-outputs="true" transactional="true" retry-interval="100" asynchronous="false">
  <url input="var://the_request_SOAP_Format"asynchronous="true">https://XXXXXXX</url>

现在(URL输入)中是需要发送的请求,(https://XXXXXXX)是需要发送请求的指定后端

现在我还需要发送一些身份验证标头(httpHeaders),如果没有这些标头,则会出现Authorization错误

    <xsl:variable name="httpHeaders">
      <header name="Content-Type">application/json</header>
      <header name="Authorization">
        <xsl:value-of select="concat('Bearer ',$some_sessionID)"/>
      </header>
    </xsl:variable>

是否可以在结果模式元素/ Tab属性中添加这些“ httpHeaders”

谢谢

2 个答案:

答案 0 :(得分:0)

我不确定您要实现的目标,但为响应(背面)添加了HTTP标头:

<dp:set-http-response-header name="'HeaderName'" value="$httpHeaders"/>

<dp:set-http-request-header name="'HeaderName'" value="$httpHeaders"/>

<results>是处理策略将作为请求/响应的有效负载输出的数据的集合,并且不包含标头。您不应该尝试更改<results>对象!

答案 1 :(得分:0)

调用后端的“ results-doc”方法非常强大,但是从您的问题中我不确定您是否完全理解它。 url / @ input属性必须是DataPower上下文:

<url input="var://context/mycontext" ...

要将标头与该上下文相关联,您应该对所需的每个标头执行以下操作:

<dp:set-variable
  name="'var://context/mycontext/_extension/header/Content-Type'"
  value="'application/json'"/>

(这将在您的XSLT代码中完成,与创建“结果”文档分开,但是在使用Results Action执行之前。)