如何正确获取WSO2 ESB中的响应头的值(在调用介体之后获得的响应)

时间:2017-07-11 07:58:40

标签: wso2 wso2esb esb

我是 WSO2 ESB 中的新手,我遇到以下问题。

在我的代码中,我有一个调用中介执行对外部Web服务(由端点表示)的请求,然后将此外部Web服务(XML文档)获得的结果放入消息商店

这样的事情:

<!-- Call GLIS API -->
<call>
    <endpoint key="transferFromGLISAPI"/>
</call>
<log level="full"/>

<!-- Store result into transferFromResultMessageStore  -->
<store messageStore="transferFromResultMessageStore"/>

工作正常,正确调用 transferFromGLISAPI 端点所代表的外部Web服务,并将检索到的XML文档正确放入我的消息存储库。

我的问题是,在调用中介执行后,我想从收到的响应中检索一些标题值。

如果我使用 cURL 来执行对此外部网络服务的调用,我有类似这样的内容:

$ curl -i -k https://XXX.YYY.ZZZ.WWW/glisapi/v1/pgrfas?doi=10.0155/1M
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   103  100   103    0     0    164      0 --:--:-- --:--:-- --:--:--   164HTTP/1.1 200 OK
Date: Tue, 11 Jul 2017 07:51:08 GMT
Server: Apache/2.4.7 (Ubuntu)
X-Rate-Limit-Limit: 3
X-Rate-Limit-Remaining: 2
X-Rate-Limit-Reset: 0
X-Pagination-Total-Count: 0
X-Pagination-Page-Count: 0
X-Pagination-Current-Page: 1
X-Pagination-Per-Page: 10
Link: <https://XXX.YYY.ZZZ.WWW/glisapi/v1/pgrfas?doi=10.0155%2F1M&page=1&per-page=10>; rel=self
Vary: Accept-Encoding
Content-Length: 103
Content-Type: application/xml; charset=UTF-8

<?xml version="1.0" encoding="UTF-8"?>
<pgrfas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

正如您在我的cURL输出中看到的,我也有一些标题。

我想要检索并存储 X-Rate-Limit-Remaining X-Rate-Limit-Reset 标头的值的两个属性。然后我想将这些值记录到Carbon控制台中。

我该怎么办?如何从获得的响应中提取这两个值并将其放入将要记录的属性中?

1 个答案:

答案 0 :(得分:1)

尝试在呼叫中介之前设置BLOCKING_SENDER_PRESERVE_REQ_HEADERS=false,就像这样。

<property name="BLOCKING_SENDER_PRESERVE_REQ_HEADERS" value="false"/>
<call blocking="true">
    <endpoint key="xxxx"/>
</call>
<log level="full"/>

参考:https://docs.wso2.com/display/ESB490/Call+Mediator