【问题标题】:How can I correctly obtain the value of response headers in WSO2 ESB (the response obtained after a call mediator)如何正确获取 WSO2 ESB 中响应标头的值(调用中介后获得的响应)
【发布时间】:2018-04-18 14:21:44
【问题描述】:

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

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

类似这样的:

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

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

它工作正常,由 transferFromGLISAPI 端点表示的外部 Web 服务被正确调用,检索到的 XML 文档被正确放入我的消息存储中。

我的问题是,在 call mediator 执行之后,我还想从收到的响应中检索一些标头值。

如果我使用 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 控制台中。

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

【问题讨论】:

    标签: wso2 wso2esb esb


    【解决方案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

    【讨论】:

    • 好的...但是我怎样才能检索这些值并放入属性中?
    • 呼叫中介的blocking="true"属性到底是什么意思?我没有在我的代码中使用它。有什么区别?
    • q1) 我没有检查自己,但它们应该可以作为transport 范围的属性使用。 q2) 请转到我提供的链接并阅读文档。
    • 它似乎使用 $trp: 范围没有
    • 非阻塞模式?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 2012-05-02
    • 2015-02-28
    • 2020-08-10
    • 2016-07-25
    • 1970-01-01
    相关资源
    最近更新 更多