几天来,我一直在 Stackoverflow 和 WSO2 ESB 文档中进行研究,但我还没有找到任何明确的答案。
我的应用程序使用 JavaScript 并使用 Dojo 框架。理想情况下,所有 Web 服务调用都应针对 REST 进行并返回 JSON。由于这个示例 440,我知道如何让 SOAP xml 作为 JSON 返回:“ http//wso2.org/project/esb/java/4.0.3/docs/samples/advanced_mediation_samples.html#Sample440 ”我看过在此博客上发布的示例中:“ http//vvratha.blogspot.ca/2011/11/invoking-restful-service-via-wso2esb.html ”我似乎能够从soapUI之类的工具调用代理服务并以 JSON 格式获取我的结果。所以我只能假设 ESB 工作正常但是当我尝试使用 dojo.xhrGet 或 dojo.io.script.get 调用它时,数据总是返回为 NULL!
我应该为 ESB 代理服务调用 REST 中的什么方法?如果我查看服务的 wsdl,该操作似乎称为“调解”,但这并没有让我更进一步。我查看了示例 800:“ http//wso2.org/project/esb/java/4.0.3/docs/samples/rest_api_samples.html#Sample800 ”但我不清楚在哪里使用它。
注意:对于那些 http 链接,请在 http 之后添加“:”。我似乎用完了超链接的配额。
Ratha 帮助后的更多信息: 1. 这就是我想调用代理服务的方式:(稍后会有更多查询字符串参数)http//loh7:8280/services/TestRestProxy?address=1460%20nicholson%20road
此中介消息跟踪器转储中的查询字符串为空:
13:10:10,803 [-] [HttpServerWorker-16] INFO 代理服务 TestRestProxy 从:192.168.7.143
13:10:10,803 [-] [HttpServerWorker-16] INFO 消息接收到新消息:/services/TestRestProxy?address= 1460%20nicholson%20road
13:10:10,803 [-] [HttpServerWorker-16] 信息 SOAPAction: null
13:10:10,803 [-] [HttpServerWorker-16] 信息 WSA-Action: null
13:10:10,803 [-] [ HttpServerWorker-16] INFO 使用代理服务的匿名序列进行中介
13:10:10,804 [-] [HttpServerWorker-16] INFO Start : Sequence
13:10:10,804 [-] [HttpServerWorker-16] INFO Sequence : : mediate()
13:10:10,804 [-] [HttpServerWorker-16] INFO Start : 日志调解器
13:10:10,805 [-] [HttpServerWorker-16] INFO querystring = null
13:10:10,805 [-] [HttpServerWorker-16] INFO 结束:日志中介
13:10:10,806 [-] [HttpServerWorker-16] INFO 开始:日志中介
13:10:10,806 [-] [HttpServerWorker-16] INFO结束:日志中介
13:10:10,806 [-] [HttpServerWorker-16] INFO 开始:发送中介
13:10:10,806 [-] [HttpServerWorker-16] INFO 通过端点发送消息:EsriNA10 解析到地址 =
这是代理的样子: 注意:我想提取“地址”值并将其放在请求肥皂消息中的 $1 中。
<proxy xmlns="http://ws.apache.org/ns/synapse" name="TestRestProxy" transports="https,http" statistics="disable" trace="enable" startOnLoad="true">
<target>
<inSequence>
<log level="custom">
<property name="querystring" expression="get-property('REST_URL_POSTFIX')" />
</log>
<payloadFactory>
<format>
<GeocodeAddress xmlns="http://www.esri.com/schemas/ArcGIS/10.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Address xmlns="">
<PropertyArray>
<PropertySetProperty>
<Key>Street</Key>
<Value>$1</Value>
</PropertySetProperty>
<PropertySetProperty>
<Key>City</Key>
<Value>Newmarket</Value>
</PropertySetProperty>
<PropertySetProperty>
<Key>State</Key>
<Value>ON</Value>
</PropertySetProperty>
<PropertySetProperty>
<Key>Zip</Key>
<Value>L3Y 9C3</Value>
</PropertySetProperty>
<PropertySetProperty>
<Key>Country</Key>
<Value>CANADA</Value>
</PropertySetProperty>
</PropertyArray>
</Address>
<PropMods xmlns="">
<PropertyArray>
<PropertySetProperty>
<Key>OutputSpatialReference</Key>
<Value xmlns:q2="http://www.esri.com/schemas/ArcGIS/10.0" xsi:type="q2:ProjectedCoordinateSystem">
<WKID>102100</WKID>
</Value>
</PropertySetProperty>
</PropertyArray>
</PropMods>
</GeocodeAddress>
</format>
<args>
<arg expression="$ctx:querystring" />
</args>
</payloadFactory>
<log level="full" category="TRACE" separator="," />
<send>
<endpoint key="EsriNA10" />
</send>
</inSequence>
<outSequence>
<log level="full" separator="," />
<xslt key="out_transform" />
<property name="messageType" value="application/json" scope="axis2" type="STRING" />
<send />
</outSequence>
</target>
</proxy>