[英]JSON to SOAP WSO2 Api manager xml sequence
我將以REST(json)API的形式發布SOAP服務。 我要公開的服務操作在WSDL / XSD定義中具有xml序列元素:
<xs:complexType name="hellolist">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="hellolistResponse">
<xs:sequence>
<xs:element name="return" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
我不知道如何使用PayloadFactory將JSON數組映射到xml序列。 我發現的所有樣本都只處理簡單的json和SOAP消息,例如樣本WSO2轉換 。 我想轉換此json消息:
{"hellolist":{"name":["Peter","Mary","Ann","James"]}}
對於此肥皂消息:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:dum="http://dummyservice2.com/">
<soapenv:Header/>
<soapenv:Body>
<dum:hellolist>
<name>Peter</name>
<name>Mary</name>
<name>Ann</name>
<name>James</name>
</dum:hellolist>
</soapenv:Body>
</soapenv:Envelope>
您可以使用有效負載工廠中介程序來執行此操作。 它可用於在客戶端和后端服務器之間轉換或替換消息內容。 在您的情況下,您可以按以下方式配置代理服務。
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="json_to_xml_factory"
transports="https,http"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<payloadFactory media-type="xml">
<format>
<dum:hellolist xmlns:dum="http://dummyservice2.com/">
<name xmlns="">$1</name>
<name xmlns="">$2</name>
<name xmlns="">$3</name>
<name xmlns="">$4</name>
</dum:hellolist>
</format>
<args>
<arg evaluator="json" expression="$.hellolist.name[0]"/>
<arg evaluator="json" expression="$.hellolist.name[1]"/>
<arg evaluator="json" expression="$.hellolist.name[2]"/>
<arg evaluator="json" expression="$.hellolist.name[3]"/>
</args>
</payloadFactory>
<log level="full"/>
</inSequence>
<outSequence/>
</target>
<description/>
</proxy>
請參考以下鏈接以獲取更多信息。
https://docs.wso2.com/display/ESB490/PayloadFactory+Mediator http://christinetechtips.blogspot.com/2014/02/payload-factory-mediators-to-work-with.html http:// madhukaudantha。 blogspot.com/2013/05/wso2-esb-payload-mediator-tutorial.html
如果您擁有非靜態有效負載(您的情況),那么payload-factory-mediator將不是解決方案(僅適用於靜態有效負載)。 解決問題的最佳方法是在WSO2 ESB中使用xslt中介程序+ Rich中介程序。 您可以嘗試以下示例, https://docs.wso2.com/display/ESB481/Sample+440%3A+Converting+JSON+to+XML+Using+XSLT
或者,您可以使用腳本介體,以防萬一,如本示例所述。 https://docs.wso2.com/display/ESB481/Sample+350%3A+Introduction+to+the+Script+Mediator+Using+JavaScript 。 但這不是最喜歡的方式。
如上所述,我已經使用WSO2 ESB完成了您的轉換。 但是我不知道WSO2 APIM是否也提供了這些調解工具(當我搜索您的問題時找不到任何示例)。
請嘗試下面提到的步驟
將具有斷言的SoapUI中的SOAP測試服務轉換為具有斷言的JSON服務的步驟
現在,您可以看到新打開的項目中的所有服務都將為JSON格式,並且以前在SOAP調用中的所有斷言都將可用。
也請參閱該鏈接 ,這有助於轉換的要求完全包括斷言
如果沒有幫助,請回復
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.