Я работаю с wso2esb 4.9.0 и Wso2dss3.0.0ResponseJson в wso2esb 4.9.0 получает в формате теги
У меня есть простой выбор услуги, как показано ниже.
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="Simpleselect"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<property name="messagetype"
value="application/json"
scope="axis2"
type="STRING"/>
<property name="usercode"
expression="//usercode/text()"
scope="default"
type="STRING"/>
<payloadFactory media-type="xml">
<format>
<p:username_op xmlns:p="http://ws.wso2.org/dataservice">
<p:usercode>$1</p:usercode>
</p:username_op>
</format>
<args>
<arg evaluator="xml" expression="get-property('usercode')"/>
</args>
</payloadFactory>
<send receive="simpletest">
<endpoint>
<address uri="http://localhost:9764/services/muser_DataService/"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
</target>
<description/>
</proxy>
Последовательность:
<sequence name="simpletest" xmlns="http://ws.apache.org/ns/synapse">
<property name="messageType" scope="axis2" value="application/json"/>
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
<property name="HTTP_METHOD" scope="axis2" value="POST"/>
<property expression="//s:Datalist" name="Datalist" scope="default"
type="STRING" xmlns:ns="http://org.apache.synapse/xsd"
xmlns:ns3="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice"/>
<property expression="count(//s:Datalist)" name="Total"
scope="default" type="STRING"
xmlns:ns="http://org.apache.synapse/xsd"
xmlns:ns3="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice"/>
<filter xmlns:ns="http://org.apache.synapse/xsd"
xmlns:ns3="http://org.apache.synapse/xsd" xpath="get-property('Total')='0.0'">
<then>
<property name="RESPONSE" scope="default" type="STRING" value="true"/>
<payloadFactory media-type="xml">
<format>
<ResponseJSON xmlns="">
<Body>
<Datalist>Not Found</Datalist>
</Body>
<Status>404</Status>
</ResponseJSON>
</format>
</payloadFactory>
<send/>
</then>
<else>
<property name="RESPONSE" scope="default" type="STRING" value="true"/>
<property action="remove" name="NO_ENTITY_BODY" scope="axis2"/>
<payloadFactory media-type="xml">
<format>
<ResponseJSON xmlns="">
<Body>$1</Body>
<Status>200</Status>
<Total>$2</Total>
</ResponseJSON>
</format>
<args>
<arg evaluator="xml" expression="get-property('Datalist')"/>
<arg evaluator="xml" expression="get-property('Total')"/>
</args>
</payloadFactory>
<send/>
</else>
</filter>
</sequence>
Когда я называю это услуги с помощью CURL его дает мне ответ в виде тегов, как показано
<ResponseJSON><Body><Datalist xmlns="http://ws.wso2.org/dataservice"><userid>-1899999899</userid><username>Vikash Sinha</username><usercode>vikash</usercode></Datalist></Body><Status>200</Status><Total>1.0</Total></ResponseJSON>
Am ожидает результат в виде {} подобные
{"ResponseJSON":{"Body":{"Datalist":parameters},"Status":"200","Total":"1.0"}}
messag е форматировщики и строители в axix2.xml являются
<messageFormatter contentType="application/json"
class="org.apache.synapse.commons.json.JsonStreamFormatter"/>
<messageBuilder contentType="application/json"
class="org.apache.synapse.commons.json.JsonStreamBuilder"/>
журналов:
[2015-09-15 10:44:02,979] INFO - LogMediator To: http://www.w3.org/2005/08/addressing/anonymous, WSAction: , SOAPAction: , MessageID: urn:uuid:942e2525-29f7-4ef6-b64f-709ea41f4bbf, Direction: response, Envelope: <?xml version='1.0' encoding='utf-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><DataCollection xmlns="http://ws.wso2.org/dataservice"><Datalist><partybranchid>2127629166052452</partybranchid><partybranchname>other locations</partybranchname><partyid>460077453499443</partyid><partyname>Youtility Technologies Pvt Ltd</partyname><ouid>-1</ouid><organizationunitname>NONE</organizationunitname><inchargeid>-1899999899</inchargeid><sbuheadid>-1</sbuheadid><usercriteriaconfigid>1187416899913503</usercriteriaconfigid><primarymail>[email protected]</primarymail></Datalist><Datalist><partybranchid>2545910581364239</partybranchid><partybranchname>DBPB001</partybranchname><partyid>2534954639984412</partyid><partyname>DBPRTY001</partyname><ouid>2538210579514587</ouid><organizationunitname>DBORG001</organizationunitname><inchargeid>2540093122446574</inchargeid><sbuheadid>1209449655666077</sbuheadid><usercriteriaconfigid>1187416899913503</usercriteriaconfigid><primarymail>[email protected]</primarymail></Datalist></DataCollection></soapenv:Body></soapenv:Envelope>
Прежде всего поместите медиатор журнала в последовательность приема и проверьте, что ответ фактически обработан последовательностью.Во-вторых, открытая консоль разработчика браузера и проверьте, что такое значение заголовка Content-Type для запроса. – simar
Другой пример - «messagetype» в примере u, в документации есть другой вариант «messageType». Java lang чувствителен к регистру – simar
Я поместил журнал mediatro и внес некоторые изменения, так как я сказал, но получаю тот же ответ в формате тегов. Я думаю, что причиной этого является сборщик сообщений в asis2.xml, который не преобразует мыльное сообщение в JSONresponse в посреднике полезной нагрузки, У меня есть идея .. – user4045063