我无法让PayloadFactory介体将输入参数转换为服务期望的值。
我需要通过查看输入请求并为新参数提供默认值或在WSO2层执行数据类型转换来支持旧版API。出于PoC的目的,我试图在服务需要值时发送输入参数val,但是我看不到输入参数正确到达服务。以下是我正在使用的顺序:
{
"timestamp": "2018-12-11T15:54:54.627+0000",
"status": 500,
"error": "Internal Server Error",
"message": "could not extract ResultSet; nested exception is org.hibernate.exception.GenericJDBCException: could not extract ResultSet",
"path": "/user/delete"
}
这是我使用SOAPUI发出的Web请求:
<definitions xmlns="http://ws.apache.org/ns/synapse" name="sample1">
<sequence name="sample1">
<in>
<!-- using payloadFactory mediator to transform the request message -->
<payloadFactory media-type="xml">
<format>
<tem:GetData xmlns:tem="http://localhost/LegacyService/Service1.svc">
<tem:value>$1</tem:value>
</tem:GetData>
</format>
<args>
<arg xmlns:tem="http://localhost/LegacyService/Service1.svc" expression="//tem:val"/>
</args>
</payloadFactory>
</in>
<send/>
</sequence>
</definitions>
如何解决此问题?
答案 0 :(得分:0)
从请求中查找值时,请求中的名称空间和有效负载工厂中的名称空间不同。因此,您的表达式正在搜索请求中不存在的元素。
xmlns:tem="http://localhost/LegacyService/Service1.svc"
(payloadFactory参数)
vs
xmlns:tem="http://tempuri.org/"
(请求消息)
您需要确保参数中的表达式与请求消息匹配
<args>
<arg xmlns:tem="http://tempuri.org/" expression="//tem:val"/>
</args>