我基本上是在esb api中进行两次POST调用。第一个调用是内容类型为文本。下一次调用的内容类型为application / 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>
第二个调用是向端点发送空请求有效负载
谢谢, 阿齐姆
答案 0 :(得分:0)
可能是查询是通过GET完成而不是POST(可以解释空体)。 您是否尝试明确确定要使用此类帖子,例如
<property description="Force Post" name="HTTP_METHOD" scope="axis2"
type="STRING" value="POST"/>