【发布时间】:2014-06-05 20:14:32
【问题描述】:
我正在使用 wso2 4.7.0 和 wso2dss 3.0.0..我创建了一个服务,我的客户端在请求中发送客户端代码,我必须使用客户端名称和客户端 ID 进行响应。我已经创建了一个代理服务和序列它喜欢:
<inSequence onError="fault">
<property name="messageType" value="application/json" scope="axis2"/>
<property name="clientcode"
expression="//clientcode/text()"
scope="default"
type="STRING"/>
<payloadFactory>
<format>
<p:Select_Clientid_Op xmlns:p="http://ws.wso2.org/dataservice">
<xs:clientcode xmlns:xs="http://ws.wso2.org/dataservice">$1</xs:clientcode>
</p:Select_Clientid_Op>
</format>
<args>
<arg evaluator="xml" expression="//clientcode/text()"/>
</args>
</payloadFactory>
<send receive="Client_Seq2.0">
<endpoint>
<address uri="http://localhost:9764/services/muser_DataService2.0/"
format="soap11">
<suspendOnFailure>
<errorCodes>101500,101501,101506,101507,101508,101503,50000</errorCodes>
<initialDuration>30</initialDuration>
<progressionFactor>1.0</progressionFactor>
<maximumDuration>300</maximumDuration>
</suspendOnFailure>
</address>
</endpoint>
</send>
</inSequence>
<outSequence onError="fault">
<send/>
</outSequence>
顺序:
<sequence xmlns="http://ws.apache.org/ns/synapse" name="Client_Seq3.0">
<property name="messageType" value="application/json" scope="axis2"/>
<property name="FORCE_ERROR_ON_SOAP_FAULT" value="true"/>
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice" name="clientid" expression="//s:clientid/text()" scope="default" type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice" name="clientname" expression="//s:clientname/text()" scope="default" type="STRING"/>
<property xmlns:ns="http://org.apache.synapse/xsd" xmlns:s="http://ws.wso2.org/dataservice" name="clientshortname" expression="//s:clientshortname/text()" scope="default" type="STRING"/>
<log>
<property xmlns:ns="http://org.apache.synapse/xsd" name="clientid" expression="get-property('clientid')"/>
</log>
<filter xmlns:ns="http://org.apache.synapse/xsd" xpath="get-property('clientid')=''">
<then>
<payloadFactory>
<format>
<ResponseJSON xmlns="">
<Exception> Data Not Found</Exception>
<Status>404</Status>
</ResponseJSON>
</format>
</payloadFactory>
<send/>
</then>
<else>
<payloadFactory>
<format>
<ResponseJSON xmlns="">
<Body>
<Datalist>
<clientid>$1</clientid>
<clientname>$2</clientname>
<clientshortname>$2</clientshortname>
</Datalist>
</Body>
<Status>200</Status>
</ResponseJSON>
</format>
<args>
<arg xmlns:s="http://ws.wso2.org/dataservice" expression="//s:clientid/text()" evaluator="xml"/>
<arg xmlns:s="http://ws.wso2.org/dataservice" expression="//s:clientname/text()" evaluator="xml"/>
<arg xmlns:s="http://ws.wso2.org/dataservice" expression="//s:clientshortname/text()" evaluator="xml"/>
</args>
</payloadFactory>
<log level="full"/>
<send/>
</else>
</filter>
</sequence>
卷曲:
curl -v -H "Accept:application/json" -H "Content-Type:application/json" -d '{"clientcode":"youtility"}' http://youtility-desktop:8282/services/PartyClientid3.0
我在客户端得到了 xml 格式的输出:<ResponseJSON><Body><Datalist><clientid>21405735715865601</clientid><clientname>Youtility tech</clientname><clientshortname>Youtility</clientshortname></Datalist></Body><Status>200</Status></ResponseJSON>
我要求 JSON 格式为:
{
"ResponseJSON": {
"Body": {
"Datalist": {
"clientid": "21405735715865601",
"clientname": "Youtility tech",
"clientshortname": "Youtility"
}
},
"Status": "200"
}
}
我应该在哪里更改我的代码?或者我必须更改我的payloadfactory?如果是,那么如何?
【问题讨论】:
标签: curl wso2 wso2esb wso2carbon wso2dss