IE8에서 비누를 사용하여 WCF 서비스를 호출하려고하는데 xdr의 작동 방식에 대해 머리를 맞지 않는 것처럼 보입니다. XML을 비누 끝점에 전달하는 데 사용할 수 있습니까?IE8에서 XDomainRequest를 사용하여 SOAP 호출을 구현하는 방법
1
A
답변
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>
예에서 페이로드는 for a web service exposing this contract입니다. Access-Control-Allow-Origin
헤더로 응답하는 서버의 해당 WSDL을 기반으로 모의 웹 서비스를 만들 수 있습니다.
그런 다음 parse the response가 대신 원시 문자열을 인쇄하는 필요한 데이터를 추출 할 수 있습니다 : 다 잘만 경우,이 같은 응답을 볼 수 있습니다.
문제 해결을 위해 다음 게시물을 참조하십시오 : XDomainRequest - Restrictions, Limitations and Workarounds.
보그 단, 내 남자! 그 운은 운율이 맞을뿐만 아니라 당신이 질문에 잘 대답했다는 것을 전한다. 감사. 고려해야 할 또 하나의 사항은 XDR의 경우 액세스 제어 허용 원점 값과 허용 된 옵션을 확인하는 프리 플라이트 OPTIONS 요청입니다. WCF에서 어렵습니다. – dangerdave