Как реализовать вызов 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 - ограничения, ограничения и обходные пути.

Другие вопросы по тегам