wso2 - WSO2 EI 6.6.0 类调解器无法使用 SOAP 调用返回内容
问题描述
我在 EI 6.6.0 中有以下 API:
<?xml version='1.0' encoding='UTF-8'?>
<api xmlns="http://ws.apache.org/ns/synapse" name="sample" context="/sample">
<resource methods="POST">
<inSequence>
<payloadFactory media-type="xml">
<format>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soap:Body>
<P xmlns="http://tempuri.org/">
<P1>$1</P1>
<P2>$2</P2>
<P3>$3</P3>
</P>
</soap:Body>
</soap:Envelope>
</format>
<args>
<arg evaluator="json" expression="$.p1" />
<arg evaluator="json" expression="$.p2" />
<arg evaluator="json" expression="$.p3" />
</args>
</payloadFactory>
<log level="full" />
<property name="Content-Type" value="text/xml;charset=UTF-8" scope="axis2"/>
<header name="Accept" scope="transport" value="text/xml"/>
<call>
<endpoint>
<wsdl Action="name_of_the_action" service="name_of_the_service" port="name_of_soap_port" uri="http://<ip>/path?WSDL" />
</endpoint>
</call>
<class name="my_mediator_package"></class>
<log level="full" />
<payloadFactory media-type="xml">
<format>
<retorno xmlns="">
<msg>$1</msg>
</retorno>
</format>
<args>
<arg evaluator="xml" expression="get-property('property_set_on_mediator')" />
</args>
</payloadFactory>
<property name="messageType" value="application/xml" scope="axis2" type="STRING" />
<respond />
</inSequence>
<outSequence>
</outSequence>
<faultSequence>
<property name="text" value="An unexpected error occured"/>
<property name="message" expression="get-property('ERROR_MESSAGE')"/>
<payloadFactory media-type="xml">
<format>
<error xmlns="">
<msg>$1</msg>
</error>
</format>
<args>
<arg evaluator="xml" expression="get-property('ERROR_MESSAGE')"/>
</args>
</payloadFactory>
<property name="messageType" value="application/json" scope="axis2" type="STRING"/>
<respond/>
</faultSequence>
</resource>
</api>
我的中介方法内容:
public boolean mediate(MessageContext synCtx) {
org.apache.axis2.context.MessageContext axis2MessageContext = ((Axis2MessageContext) synCtx)
.getAxis2MessageContext();
try {
// Getting the json payload to string
String jsonPayloadToString = JsonUtil.jsonPayloadToString(((Axis2MessageContext) synCtx)
.getAxis2MessageContext());
System.out.println("original payload : \n" + jsonPayloadToString + "\n");
我无法在我的调解器中使用我的 SOAP 调用的返回,所以我可以处理它。
当我运行 API 时,我从中介代码中得到以下信息:
original payload:
{}
有没有办法让我可以获取 SOAP 调用返回的信封并在我的调解器中使用它?
解决方案
1-确保 json 有效负载在那里。因此,将json
属性记录在您的inSequence
.
2-您可以在您的当前什么都不做I'm not being able to use the return from my SOAP call in my mediator so I can work on it.
的情况下看到响应有效负载。outSequence
3-根据您只是调用 SOAP Web 服务的场景,您不需要类中介。换句话说,当您不需要操作初始有效负载然后将其传递给目标服务时,在逻辑上实现您自己的类中介对您没有任何好处。
此外, https://docs.wso2.com/display/EI611中有相当多的示例可以帮助您。
请让我知道您的问题是否已解决。
推荐阅读
- xamarin - Xamarin 应用程序在 iOS 10.3 中崩溃,但在高于 11 的版本中工作
- wolfram-mathematica - Mathematica 随机整数函数
- plotly - 绘制上传的 CSV 的问题
- python - 我无法在 python 中使用 imap 获取邮件
- javascript - 返回上一个 Input Javascript
- extjs - exjs6标签在数据绑定时呈现值
- angular - 使用 mat 分页器方法 firstPage() 对函数进行单元测试
- html - 角度 6 中所有浏览器的下载文件功能。适用于 chrome,但不适用于 IE。我错过了什么?
- php - 为什么 bccomp 需要秤才能正常工作?
- simple-html-dom - 简单的 html dom 查找返回 NULL