IE8 で SOAP を使用して WCF サービスを呼び出そうとしていますが、xdr がどのように機能するのか理解できません。xml を SOAP エンドポイントに渡すために使用できますか?
1685 次
1 に答える
2
xml を SOAP エンドポイントに渡すために使用できますか?
基本的には、適切にフォーマットされた 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 サービス用です。Access-Control-Allow-Origin
ヘッダーで応答するサーバー上で、その WSDL に基づいてモック Web サービスを作成できます。次に、すべてがうまくいけば、次のような応答が表示されます。
その後、生の文字列を出力する代わりに、応答を解析して必要なデータを抽出できます。
トラブルシューティングについては、次の投稿もご覧ください: XDomainRequest - Restrictions, Limitations and Workarounds .
于 2012-07-01T14:03:27.230 に答える