【问题标题】:Passing POST RESTful message to WCF Proxy with WSO2 ESB使用 WSO2 ESB 将 POST RESTful 消息传递给 WCF 代理
【发布时间】:2013-04-10 11:30:39
【问题描述】:

我对 WS02 ESB 还很陌生——我的公司几个月前实施了它。

目前,我正在尝试在 WCF 服务的顶部放置一个 REST 层。我尝试实现的用例是一个位置 api,其中移动应用程序(iphone、android)通过 RESTful xml 向 WCF 服务提供位置数据。

我当前的数据流结构类似于移动应用 -> REST API -> ESB 代理 -> WCF 服务。

在负载中提供给 REST 端点的 xml 是这样的:

<Location Partner='{API Parnert Name}' Code='{API Partner Code}' Password='{API Partner Password}' Generated='2013-04-16T16:30:15Z'>
  <Latitude>44.5881</Latitude>
  <Longitude>-89.581248</Longitude>
  <Accuracy>75.334</Accuracy>
  <MobileDeviceUID>A1000017B8B437</MobileDeviceUID>
</Location>

为了通过 WSO2 ESB 路由这个 xml,我创建了一个 API 和一个服务代理。 (一切都在我的机器上本地运行)

API 配置如下:

<api xmlns="http://ws.apache.org/ns/synapse" name="API_LOC" context="/WS1/Location">
   <resource methods="POST">
      <inSequence>
         <log level="full" category="DEBUG"/>
         <send>
            <endpoint>
               <address uri="http://localhost:8280/services/WS1LocationProxy/AddLocation" format="soap11"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <send/>
         <log level="full"/>
      </outSequence>
   </resource>
</api>

而我的代理是这样配置的:

<proxy xmlns="http://ws.apache.org/ns/synapse" name="WS1LocationProxy" transports="https,http" statistics="disable" trace="disable" startOnLoad="true">
   <target>
      <inSequence>
         <log level="full" category="TRACE"/>
         <property name="FORCE_HTTP_1.0" value="true" scope="axis2"/>
         <send>
            <endpoint>
               <address uri="http://localhost:54270/WS1LocationService.svc"/>
            </endpoint>
         </send>
      </inSequence>
      <outSequence>
         <send/>
      </outSequence>
   </target>
   <publishWSDL uri="http://localhost:54270/WS1LocationService.svc?wsdl"/>
   <parameter name="useOriginalwsdl">true</parameter>
   <parameter name="interface">WS1LocationService</parameter>
   <parameter name="serviceType">proxy</parameter>
   <description></description>
</proxy>

我的主要问题是:如何将传入 REST 请求的 POST 有效负载转换为代理中 WCF 服务所需的 SOAP 信封。我一直没能找到这样一个过程的好例子。

【问题讨论】:

    标签: wcf rest wso2 wso2esb


    【解决方案1】:

    您不需要手动转换它..传入的 POST 请求将被转换为 SOAP 消息以便在 ESB 中处理.. 您可以使用代理中的日志调解器进行检查.. 在序列中..只需使用日志调解器并查看输出..

    <log level="full" >
       <property name ="incoming message" value="*****"/>
    </log>
    

    【讨论】:

    • 谢谢。这让我对正在传递的数据有了一些了解。据我所知,我需要转换一些数据。传入 REST api 的 SOAP 消息与我尝试与之通信的 WCF 服务所需的 SOAP 消息不匹配。核心 xml 数据是相同的(在 节点内),但需要将其包装在 Action 中,以便 WCF 代理理解调用——除非我对 SOAP 的理解不正确。
    • 在insequence中,您必须定义您的中介逻辑..ESB文档中有许多样本,这对您有帮助..
    • 是的,我能够确定。我已经完成了中介逻辑。
    猜你喜欢
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 2013-08-09
    • 2012-07-03
    • 2012-12-08
    • 1970-01-01
    • 2013-06-19
    相关资源
    最近更新 更多