![](/img/trans.png)
[英]How do I use a soap xml based webservice in javascript over a secure https connection?
[英]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.