AJAX 及使用 E4X 编写 Web 服务脚本,第 2 部分:用 E4X 创建新的 Web 服务
2010-03-09 00:00:00 来源:WEB开发网图 3. 简单的编排服务
每次查找 WSDL 是不现实的,但是它阻止了这篇文章中对端点 URL 的修改,这里也展示了这种实现逻辑。更多的智能脚本可以缓存结果。但是,为了将这个用在 Rhino 中,我们可能要编写一个 Java 的 singleton 类。
首先要做的就是专门编写一个从 WSDL 中提取 URL 的函数,因为从 WSDL 中提取 URL 需要执行两次。
function getAndParseWSDL(wsdlURL) {
var xh = new XMLHttpRequest();
xh.open("GET", wsdlURL ,false);
xh.send(null);
var resp = getAsXML( xh.responseText)
return resp..*::address.@location[0];
}
您将注意到两件事情。首先,因为这些都将在服务器里运行,所以我们希望能够同步地执行所有这些操作,因为异步操作需要大量的”智能机制“,例如持久性保存与 Web 服务寻址(WS-Addressing)的支持。
其次,因为我们想使代码具有一些未来的实验,我们已经清除了 location 用来抽取第一个location。如果我们想做的更彻底一点,我们需要遵循 WSDL 结构来指定有我们期望的绑定的位置信息。
这里是获取货币符号的代码:
function getCurrencyValue(country, url) {
var env = <s:Envelope
xmlns:c="urn:xmethods-CurrencyExchange"
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<c:getRate>
<country1>US</country1>
<country2>{country}</country2>
</c:getRate>
</s:Body>
</s:Envelope>
response = execService(url, env);
return response..Result;
}
更多精彩
赞助商链接