簡體   English   中英

如何使用Javascript連接到SOAP Web服務?

[英]How do I connect to SOAP webservice with Javascript?

我一直在嘗試讓javascript使用幾天的SOAP服務,並且無法使其正常工作。 它可以在Excel,SOAP-UI,Fiddler,Flex中運行,但不能在HTML / Javascript中運行。 任何幫助,將不勝感激。

到目前為止,我已經在Simplest SOAP示例中看了一個簡單示例 我按照那里的代碼替換了我的Web服務的相應部分。 我得到的所有錯誤似乎都指向常見的CORS錯誤。

對預檢請求的響應未通過訪問控制檢查:請求的資源上不存在“ Access-Control-Allow-Origin”標頭。 因此,不允許訪問原始“空”。 響應的HTTP狀態碼為403。

我環顧四周,以找出原因,並嘗試了各種解決方案,但都沒有奏效。

這是我調用網絡服務的代碼

<script type="text/javascript">
    function soap() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.open('POST', 'https://myurl', true);

        // build SOAP request
        var sr =
        '<?xml version="1.0" encoding="UTF-8"?>' + 
    '<soap:Envelope ' +
    'xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" ' + 
    'xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" ' + 
    'xsi:schemalocation="http://schemas.xmlsoap.org/soap/envelope/">' +
    '<soap:Body>' +
    '<mymethod xmlns="http://my.com/server/">' +
    '<Key>123456789</Key>' +
    '</mymethod>' +
    '</soap:Body></soap:Envelope>';

     xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4) {
                if (xmlhttp.status == 200) {
                    alert('done. use firebug/console to see network response');
                }
            }
        }
        // Send the POST request
        xmlhttp.setRequestHeader('Content-Type', 'text/xml');
        xmlhttp.setRequestHeader('Authorization', 'Basic myusername/password here');
        xmlhttp.send(sr);
    }
</script>

HTML只是運行javascript的按鈕。 當我單擊它時,出現兩個錯誤:

選項xxxxxxxxxxxxxx 403(禁止)

(xxxxxxxxxxxxx是我的網址)和

https:// xxxxxxxxxxxxxxxxxxxxx :對預檢請求的響應未通過訪問控制檢查:所請求的資源上不存在“ Access-Control-Allow-Origin”標頭。 因此,不允許訪問原始“空”。 響應的HTTP狀態碼為403。

有什么想法為什么這行不通嗎? 另一個大問題是,為什么它在Fiddler中而不在我的網頁上有效? 我使用了Fiddlers的作曲者標簽,並輸入了與上述內容大致相同的信息,並且效果很好。

謝謝。

萬一有人來這里尋找答案,這就是我的想法。

基於上面關於使用代理的建議,我環顧四周,發現沒有辦法使用代理(該服務來自舊的大型機,其他組件也拼湊在一起)。 但是,我在這里建立了這個想法。

我正在使用ColdFusion作為Web服務器。 它具有使用.NET dll的能力。 因此,我創建了一個可以訪問SOAP服務並返回結果的DLL。 我能夠在ColdFusion頁面(使用jquery / javascript)中捕獲此結果,並像直接從Javascript調用它一樣使用它。

因此,我想這可能就是使用上面提到的像charlietfl這樣的代理的意思。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM