[英]WSO2 ESB Payload Factory creates invalid SOAP envelope
我正在嘗試將REST請求轉換為WSO2的ESB中的SOAP請求。 因此,我在ESB中創建了一個提供REST端點的API。 在此API中,每個資源都有一個按順序排列,其中包含有效負載工廠介體。 該介體將REST請求轉換為SOAP消息。 然后將SOAP消息發送到我之前定義的自定義ESB代理。
這是問題所在:當我發送REST請求時,請求已處理並轉換為SOAP,但響應HTML狀態代碼為500。結果,我在ESB中激活了SOAP Message Tracer,以檢查傳入的消息和檢查由Payload Factory Mediator創建的消息的外觀。
有效負載工廠的結果SOAP消息肯定是錯誤的,如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<soapenv:Envelope>
<soapenv:Body>
<mms:getCarData xmlns:mms="mms.cardiag"/>
</soapenv:Body>
</soapenv:Envelope>
</soapenv:Body>
如您所見,消息中創建了第二個<soapenv:Envelope>
+主體。 我無法弄清楚為什么會發生這種情況,至關重要的是,因為我非常仔細地遵循WSO2文檔的Example 800 。
我也在REST API中提供了資源的實現,因此您可以檢查Payload Factory Mediator的配置。 我確定我錯過了一些重要的事情,但是不幸的是,我無法弄清楚是什么。
<resource methods="GET" uri-template="/cardata">
<inSequence>
<payloadFactory media-type="xml">
<format>
<mms:getCarData xmlns:mms="mms.cardiag"/>
</format>
<args/>
</payloadFactory>
<log level="full" category="TRACE"/>
<send>
<endpoint>
<address uri="http://wso2-1:8280/services/TestProxy" format="soap11"/>
</endpoint>
</send>
</inSequence>
<outSequence>
<send/>
</outSequence>
謝謝你的幫助!
假設格式為text / xml,則應使用標頭介體設置SOAP Action。 如果沒有SOAP Action,則可以設置一個空白:
<header name="Action" value=""""/>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.