如何将XML模拟负载放入WSO2 ESB发送中介发送的POST请求负载中?

如何将XML模拟负载放入WSO2 ESB发送中介发送的POST请求负载中?,wso2,wso2esb,middleware,wso2carbon,Wso2,Wso2esb,Middleware,Wso2carbon,我对WSO2 ESB非常陌生,现在我必须完成第一个简单的任务,但我真的不知道从哪里开始 我必须对外部web服务执行HTTP POST请求。这个请求应该包含一个模拟的XML文档作为有效负载(此时XML必须只是模拟的,所以我认为我必须“写”它在某个地方或类似的地方) 因此,从这个简约的官方教程开始: 我已完成以下操作: 1) 我已经创建了一个新的ESB解决方案项目 2) 在名为SampleServices的“主”项目上(此时我使用的是与教程相同的名称),我已将端点注册到我的外部web服务(新建->

我对WSO2 ESB非常陌生,现在我必须完成第一个简单的任务,但我真的不知道从哪里开始

我必须对外部web服务执行HTTP POST请求。这个请求应该包含一个模拟的XML文档作为有效负载(此时XML必须只是模拟的,所以我认为我必须“写”它在某个地方或类似的地方)

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

我已完成以下操作:

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

2) 在名为SampleServices的“主”项目上(此时我使用的是与教程相同的名称),我已将端点注册到我的外部web服务(新建->端点

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

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

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

阅读第二篇教程:

我知道我可以从外部传递请求负载,例如,在第二个教程中,执行启动ESB“进程”的CURL调用:

这将执行一个调用,该调用将JSON作为有效负载传递。在前面的示例中,它可以很好地工作,但对我来说并不好

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

所以我需要这样一个流:

调用myAPI时,它将执行一个POST请求,发送模拟的XML有效负载。可能必须将其放入发送调解器中,但我不知道

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

检查此示例:

<?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>

{“persons”:[{“persons”:{“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”,
“价值”:“11111111”}、{“信息Id”:“3”、“部门”:“1”、“联系人类型”:“家”、“价值”:“美国魔术博士”}、{“人”:“Id”:“2”、“吉文纳姆”:“沙米”、“姓氏”:“贾加辛格”、“年龄”:“30”、“联系人信息”:[{“信息Id”:“1”、“部门”:“1”、“联系人类型”:“电子邮件”,
“值”:shammi@abc.org},{“InfoId”:“2”,“部门”:“1”,“联系人类型”:“mobile”,“value”:“2222”},{“InfoId”:“3”,“部门”:“1”,“联系人类型”:“home”,“value”:“Magic Dr,USA”}]}
检查此示例:

<?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>

{“persons”:[{“persons”:{“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”,
“价值”:“11111111”}、{“信息Id”:“3”、“部门”:“1”、“联系人类型”:“家”、“价值”:“美国魔术博士”}、{“人”:“Id”:“2”、“吉文纳姆”:“沙米”、“姓氏”:“贾加辛格”、“年龄”:“30”、“联系人信息”:[{“信息Id”:“1”、“部门”:“1”、“联系人类型”:“电子邮件”,
“值”:shammi@abc.org},{“InfoId”:“2”,“部门”:“1”,“联系人类型”:“mobile”,“value”:“2222”},{“InfoId”:“3”,“部门”:“1”,“联系人类型”:“home”,“value”:“Magic Dr,USA”}]}

您可以使用PayloadFactory mediator。Andrea,最好发布您的API或代理xml…正如Ernesto告诉您的,尝试将PayloadFactory放在发送中介之前,使用您想要的xml。您可以使用PayloadFactory mediator。Andrea,最好发布您的API或代理xml…正如Ernesto告诉您的,尝试使用您想要的xml将payloadfactory放在send mediator之前,现在我将尝试…我对WSO2 ESB非常陌生,我对如何处理此示例有一些疑问。我应该把这个XML代码放在哪里?我已经创建了一个新的“ESB解决方案项目”。那么?我和这个XML配置有什么关系?在我看来,这类似于api配置文件,是吗?好的,我已经将它导入到ESB api中,现在我的疑问是:在这种情况下,流以“响应中介”结尾我认为这会返回给调用方JSON…我不必返回给调用方,但我必须将其发送到外部web服务,而不是返回给调用方。我必须使用“发送中介”设置“定义的端点”吗?我必须为这个中介指定一些特定的设置吗?另一个疑问是:为什么在“PayLoadFactory”中介(在我看来,它是用来创建JSON负载的)之后有2个“Property”中介?这两个中介的作用是什么?如果您想将请求发送到外部端点,可以使用:1。如果您希望响应转到outsequence,则发送中介,2。如果您需要,请致电调解人