![](/img/trans.png)
[英]How do I call asp.net 3.5 soap xml based webservice in javascript or jquery?
[英]How to call SOAP (XML) webservice in javascript or Jquery?
我試圖在javascript / Jquery中調用asp.net網絡服務,我嘗試了很多示例,但不幸的是沒有成功,
這是我目前正在嘗試的代碼,
login("abc@gmail.com", "123456");
var productServiceUrl = 'http://localhost:50575/Service1.asmx?op=test'; // Preferably write this out from server side
function login(Email, Password) {
var soapMessage = '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> \
<soap:Body> \
<login xmlns="http://test.com/"> \
<Email>' + Email + '</Email> \
<Password>' + Password + '</Password> \
</login> \
</soap:Body> \
</soap:Envelope>';
$.ajax({
url: productServiceUrl,
type: "GET",
dataType: "xml",
data: soapMessage,
complete: endSaveProduct,
error: function (a, b, c) {
alert(a + "\n" + b + "\n" + c);
},
contentType: "text/xml; charset=\"utf-8\""
});
return false;
}
function endSaveProduct(xmlHttpRequest, status) {
$(xmlHttpRequest.responseXML)
.find('loginResult')
.each(function () {
alert( $(this).find('Message').text());
});
}
請幫幫我,謝謝。
存在多個問題:
Access-Control-Allow-Origin: *
或明確允許您的來源,否則該請求將不起作用 GET
,而應該使用POST
,因為在基於HTTP的SOAP中,信封必須位於請求正文中。 application/x-www-form-urlencoded
除非您將processData
設置為false。 僅設置contentType
只會使標頭撒謊,並且實際上不會更改此標頭。 data
參數是一個字符串,則不是這樣。 您的目標域似乎不允許使用CORS,因此不可能直接從客戶端進行。 您必須使用服務器代理來執行請求。
如果他們允許CORS,您可以這樣做:
var soapMessage = '<?xml version="1.0" encoding="utf-8"?>\
<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">\
<soap12:Body>\
<login xmlns="http://tastygo.com/">\
<BBMID>string</BBMID>\
<Email>string</Email>\
<Password>string</Password>\
</login>\
</soap12:Body>\
</soap12:Envelope>';
$.ajax( "http://m.allaccesstnt.com/AATnTWebservices/Webservices/Userwebservice.asmx", {
contentType: "application/soap+xml; charset=utf-8",
type: "POST", //important
dataType: "xml",
data: soapMessage
});
但這將不起作用,因為服務器不允許使用OPTIONS,瀏覽器必須使用OPTIONS來確定是否允許跨域請求:
OPTIONS http://m.allaccesstnt.com/AATnTWebservices/Webservices/Userwebservice.asmx 405 (Method Not Allowed)
第二個問題是:
XMLHttpRequest cannot load http://m.allaccesstnt.com/AATnTWebservices/Webservices/Userwebservice.asmx. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin.
只需添加http://m.allaccesstnt.com/AATnTWebservices/Webservices/Userwebservice.asmx/ 測試並在Web服務器端添加標頭
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.