2012-06-18 2 views

답변

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을 기반으로 모의 웹 서비스를 만들 수 있습니다.

enter image description here

그런 다음 parse the response가 대신 원시 문자열을 인쇄하는 필요한 데이터를 추출 할 수 있습니다 : 다 잘만 경우,이 같은 응답을 볼 수 있습니다.

문제 해결을 위해 다음 게시물을 참조하십시오 : XDomainRequest - Restrictions, Limitations and Workarounds.

+1

보그 단, 내 남자! 그 운은 운율이 맞을뿐만 아니라 당신이 질문에 잘 대답했다는 것을 전한다. 감사. 고려해야 할 또 하나의 사항은 XDR의 경우 액세스 제어 허용 원점 값과 허용 된 옵션을 확인하는 프리 플라이트 OPTIONS 요청입니다. WCF에서 어렵습니다. – dangerdave