Как реализовать вызов SOAP с использованием XDomainRequest в IE8
Я пытаюсь вызвать службу WCF с использованием мыла в IE8, и я не могу понять, как работает xdr. Могут ли они использоваться для передачи XML в конечную точку мыла?
1 ответ
Могут ли они использоваться для передачи XML в конечную точку мыла?
Мы в основном говорим о POST-запросе с правильно отформатированной полезной нагрузкой XML SOAP, и вы можете сделать это с помощью объекта 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>
Полезная нагрузка в этом примере предназначена для веб-службы, предоставляющей доступ к этому контракту. Вы можете создать фиктивный веб-сервис на основе этого WSDL на сервере, который отвечает Access-Control-Allow-Origin
заголовок. Затем, если все пойдет хорошо, вы должны увидеть ответ вроде этого:
Затем вы можете проанализировать ответ, чтобы извлечь необходимые данные вместо печати необработанной строки.
Для устранения неполадок также взгляните на следующий пост: XDomainRequest - ограничения, ограничения и обходные пути.