簡體   English   中英

WSO2 ESB有效負載工廠創建無效的SOAP信封

[英]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="&quot;&quot;"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM