如何将XML模拟的有效负载放入由WSO2 ESB发送调解器发出的POST请求有效负载中?

时间:2017-03-10 10:16:41

标签: wso2 wso2esb middleware wso2carbon

我在 WSO2 ESB 中绝对是新手,此时我必须完成第一个简单的任务,但我真的不知道从哪里开始。

我必须对外部Web服务执行 HTTP POST请求。这个请求应该包含一个模拟的 XML 文档作为有效负载(此时XML必须仅仅被模拟,所以我认为我必须"写"它在某处或类似的东西)

从这个简约的官方教程开始:

https://docs.wso2.com/display/ESB500/Sending+a+Simple+Message

我做了以下操作:

1)我创建了一个新的 ESB解决方案项目

2)在"主要"名为 SampleServices 的项目(此时我使用的是与本教程相同的名称)我已将端点注册到我的外部Web服务(新 - > Endpoint )。

3)然后在这个项目中,我添加了一个新的 RESP API 新 - > REST API )。与本教程不同,我已将 POST 请求而不是 GET 启用到 API资源属性,因为我需要发送 POST 包含有效负载的请求,而不是教程 GET 请求。这是我的设置:

enter image description here

4)然后,正如教程中所做的那样,我已经设置了发送中介,并且在此中介上我已经设置了已定义的端点,指向我的外部Web服务必须处理 POST 请求并检索其有效负载。

好的,现在我的问题是:如何将模拟的XML文档放入我的* send mediator发送的 POST 请求的正文中?

阅读第二篇教程: https://docs.wso2.com/display/ESB500/Routing+Requests+Based+on+Message+Content

我知道我可以从外部传递请求有效负载,例如在第二个教程中执行此 CURL 调用,启动 ESB "进程&#34 ;:

curl -v -X POST --data @request.json http://localhost:8280/healthcare/categories/surgery/reserve --header "Content-Type:application/json"

这是一个将 JSON 作为有效负载传递的调用。在前面的例子中工作正常,但对我来说并不好。

我必须在 ESB API流程中模拟 XML 文档有效负载,而不是从CURL执行的外部请求中获取,因为在第二个实现步骤中它不会被模拟但是,il将来自链中的前一步。

所以我需要这样的流程:

enter image description here

当我的 API 被调用时,它会执行 POST 请求,该请求会发送模拟的 XML有效负载。也许它必须被推入发送调解员,但我不知道......

如何将此XML放入发送中介发出的请求者的有效负载中?我在哪里定义\写它?

1 个答案:

答案 0 :(得分:3)

检查此样本:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/services/users" name="ListUsersAPI" xmlns="http://ws.apache.org/ns/synapse">
  <resource methods="GET" protocol="http" url-mapping="/*">
    <inSequence>
      <payloadFactory media-type="json">
        <format>{ "persons":[{ "person": { "Id":"1", "givenName":"ajith", "lastName":"vitharana", "age":"25", "contactInfos":[ { "InfoId":"1", "department":"1", "contactType":"email", "value":"ajith@abc.org" }, { "InfoId":"2", "department":"1", "contactType":"mobile",
          "value":"111111111" }, { "InfoId":"3", "department":"1", "contactType":"home", "value":"Magic Dr,USA" } ] }}, {"person":{ "Id":"2", "givenName":"shammi", "lastName":"jagasingha", "age":"30", "contactInfos":[ { "InfoId":"1", "department":"1", "contactType":"email",
          "value":"shammi@abc.org" }, { "InfoId":"2", "department":"1", "contactType":"mobile", "value":"2222222222" }, { "InfoId":"3", "department":"1", "contactType":"home", "value":"Magic Dr,USA" } ] } }] }</format>
        <args/>
      </payloadFactory>
      <property action="remove" name="NO_ENTITY_BODY" scope="axis2"/>
      <property name="messageType" scope="axis2" type="STRING" value="application/json"/>
      <respond/>
    </inSequence>
    <outSequence/>
    <faultSequence/>
  </resource>
</api>