我试图在 IE8 中使用肥皂调用 WCF 服务,但我似乎无法理解 xdr 的工作原理。它们可以用于将 xml 传递给肥皂端点吗?
问问题
1685 次
1 回答
2
它们可以用于将 xml 传递给肥皂端点吗?
我们基本上是在讨论具有正确格式的 XML SOAP 有效负载的 POST 请求,您可以肯定地使用XDomainRequest对象来做到这一点。这是一个基本示例:
<script type="text/javascript">
var xdr;
function soapTest() {
var data = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">' +
' <soapenv:Body>' +
' <tem:Add>' +
' <tem:a>1</tem:a>' +
' <tem:b>2</tem:b>' +
' </tem:Add>' +
' </soapenv:Body>' +
'</soapenv:Envelope>';
if (window.XDomainRequest) {
xdr = new XDomainRequest();
if (xdr) {
xdr.onerror = function() { alert("an error occured"); };
xdr.ontimeout = function() { alert("timeout"); };
xdr.onload = function() { alert(xdr.responseText); }
xdr.timeout = 10000;
xdr.open("post", "http://SomeServer/SoapCalculator");
xdr.send(data);
} else {
alert("Failed to create XDR");
}
} else {
alert("XDR doesn't exist");
}
}
</script>
示例中的有效负载用于公开此合同的 Web 服务。您可以在响应标头的服务器上基于该 WSDL 创建一个模拟 Web 服务Access-Control-Allow-Origin
。然后,如果一切顺利,您应该会看到如下响应:
然后,您可以解析响应以提取您需要的数据,而不是打印原始字符串。
对于故障排除,还请查看以下帖子:XDomainRequest - Restrictions, Limitations and Workarounds。
于 2012-07-01T14:03:27.230 回答