我基本上是在esb api中进行两次POST调用。第一次调用是将内容类型作为文本。下一次调用将内容类型作为应用程序/json。在这两种情况下,我都使用有效载荷调解器构建有效负载。成功执行第一次调用后,第二次调用失败。我在进行第二次调用时看到请求有效负载为空。我启用了线路日志,并在进行第二次调用时看到请求正文为空,尽管我能够打印消息上下文的 json 有效负载。如果我在这里做错了什么,请告诉我。
下面是代码第一个电话是 <payloadFactory media-type="xml">
<format>
<text xmlns="http://ws.apache.org/commons/ns/payload">userName=$1&password=$2& domain=$3&captcha=$4
</text>
</format>
<args>
<arg evaluator="xml" expression="get-property('uri.var.swmUser')" xmlns:ns="http://org.apache.synapse/xsd"/>
<arg evaluator="xml" expression="get-property('uri.var.swmPassword1')" xmlns:ns="http://org.apache.synapse/xsd"/>
<arg evaluator="xml" expression="get-property('uri.var.domain')" xmlns:ns="http://org.apache.synapse/xsd"/>
<arg evaluator="xml"expression="get-property('uri.var.captcha')" xmlns:ns="http://org.apache.synapse/xsd"/>
</args>
</payloadFactory>
<property name="ContentType" scope="axis2" value="text/plain"/>
<property name="messageType" scope="axis2" value="text/plain"/>
<header name="Accept" scope="transport" value="application/json"/>
<log level="full">
<property expression="json-eval($.)" name="requestpayload" xmlns:ns="http://org.apache.synapse/xsd"/>
</log>
<call>
<endpoint key="swmLoginEP"/>
</call>
<property expression="//jsonObject//sessionId//text()" name="sessionId" xmlns:ns="http://org.apache.synapse/xsd"/>
<log level="full">
<property expression="get-property('sessionId')" name="sessionId" xmlns:ns="http://org.apache.synapse/xsd"/>
</log>
<property name="ContentType" scope="axis2" type="STRING" value="application/json"/>
<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
<property expression="get-property('uri.var.key')" name="attribute" type="STRING" xmlns:ns="http://org.apache.synapse/xsd"/>
<payloadFactory media-type="json">
<format>{"attributeNames": ["vehicleModelYear"]}
</format>
<args>
<arg evaluator="xml" expression="get-property('attribute')" xmlns:ns="http://org.apache.synapse/xsd"/>
</args>
</payloadFactory>
<property name="ContentType" scope="axis2" type="STRING" value="application/json"/>
<property name="messageType" scope="axis2" type="STRING" value="application/json"/>
<header name="Accept" scope="transport" value="application/json"/>
<header expression="get-property('sessionId')" name="sessionId" scope="transport" xmlns:ns="http://org.apache.synapse/xsd"/>
<log level="full">
<property expression="json-eval($.)" name="request payload of get values" xmlns:ns="http://org.apache.synapse/xsd"/>
</log>
<log>
<property expression="$body" name="PAYLOAD" xmlns:ns="http://org.apache.synapse/xsd"/>
</log>
<call>
<endpoint key="swmAttributeValuesEP"/>
</call>
第二次调用正在向终结点发送空请求有效负载
谢谢阿齐姆
可能是查询是通过GET而不是POST完成的(可以解释空正文)。例如,您是否尝试明确指出要使用这样的帖子
<property description="Force Post" name="HTTP_METHOD" scope="axis2"
type="STRING" value="POST"/>