MULE - ESB - 如何为出站消息设置 header

MULE - ESB - how to set the header for the outbound message

我正在尝试为出站邮件设置 header 值。 我可以在调试模式下看到 http.headers 中的值。但是它没有显示邮递员的 header.

下面是片段 如您所见,我尝试使用两种不同的方式

来设置 header

{代码}

     **<set-property propertyName="http.headers.code" value="C01" doc:name="headerCode"/>**
    <set-payload value="{&#xA;   &quot;coord&quot;: {&#xA;   &quot;lon&quot;: -0.13,&#xA;   &quot;lat&quot;: 51.51&#xA;     },&#xA;   &quot;main&quot;: {&#xA;   &quot;temp&quot;: 290.24,&#xA;   &quot;pressure&quot;: 1016,&#xA;   &quot;humidity&quot;: 77,&#xA;   &quot;temp_min&quot;: 288.15,&#xA;   &quot;temp_max&quot;: 292.15&#xA;        },&#xA;   &quot;id&quot;: 2643743,&#xA;    &quot;name&quot;: &quot;London&quot;,&#xA;     &quot;cod&quot;: 200&#xA;  }" doc:name="Set Payload"/>


   **<message-properties-transformer doc:name="Message Properties">
    <add-message-property key="http.headers.id"   value="ID01" />
    </message-properties-transformer>**
    <logger message="header-property logger" level="INFO" doc:name="Logger"/>
</flow>

{代码}

附调试截图 Debugging screenshot

postman collection screenshot 我期望看到 header 中的值。但它不显示 任何人都可以阐明这一点。 谢谢你和问候 尼维

在 Mule 中设置出站属性时(我的经验是从 3.8 开始)它们将默认为 HTTP header,因此您不需要在 属性 中包含 'http.headers.'元素,只有您要添加的 header 的名称。

例如如果您的 set-property 元素是:

<set-property propertyName="id" value="ID01" doc:name="Add ID Header" />

然后在调用该服务时,这将添加 "id" 作为 HTTP 响应 header。

我的整个流程是:

<flow name="testFlow">
  <http:listener config-ref="HTTP_Listener_Configuration"
    path="/test" doc:name="HTTP" />
  <set-payload
    value="{&#xA;   &quot;coord&quot;: {&#xA;   &quot;lon&quot;: -0.13,&#xA;   &quot;lat&quot;: 51.51&#xA;     },&#xA;   &quot;main&quot;: {&#xA;   &quot;temp&quot;: 290.24,&#xA;   &quot;pressure&quot;: 1016,&#xA;   &quot;humidity&quot;: 77,&#xA;   &quot;temp_min&quot;: 288.15,&#xA;   &quot;temp_max&quot;: 292.15&#xA;        },&#xA;   &quot;id&quot;: 2643743,&#xA;    &quot;name&quot;: &quot;London&quot;,&#xA;     &quot;cod&quot;: 200&#xA;  }"
    doc:name="Set Payload" />
  <set-property propertyName="id" value="ID01" doc:name="Add ID Header" />
</flow>

当我向该流程发送请求时,我收到了预期的 HTTP header:

curl -v http://localhost:8091/test
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8091 (#0)
> GET /test HTTP/1.1
> Host: localhost:8091
> User-Agent: curl/7.47.0
> Accept: */*
>
< HTTP/1.1 200
< id: ID01  <=============
< Content-Length: 244
< Date: Tue, 10 Jul 2018 22:44:51 GMT
<
{
   "coord": {
   "lon": -0.13,
   "lat": 51.51
     },
   "main": {
   "temp": 290.24,
   "pressure": 1016,
   "humidity": 77,
   "temp_min": 288.15,
   "temp_max": 292.15
        },
   "id": 2643743,
    "name": "London",
     "cod": 200
}  

希望对您有所帮助!

约翰逊。