我正在尝试使用sumtotal的学习管理系统soap basedweb服务,并使用下面的代码来使用它。但我不知道如何从javascript捕获服务的响应,因为我在这个领域没有多少工作。请帮忙。
<script language="JavaScript" type="text/javascript">
function getData()
{
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET', 'https://Testsoapservice.com/Services/authentication.asmx?op=Login', true);
// build SOAP request
var sr = '<?xml version="1.0" encoding="utf-8"?>' +
'<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/">'+
'<soapenv:Body>' +
' <Login xmlns="http://www.testsoapservice.com/Authentication/">'+
'<credentials>'+
'<Username>xxx</Username>'+
'<Passcode>xxxx</Passcode>'+
'</credentials>'+
'</Login>'+
'</soapenv:Body>' +
'</soapenv:Envelope>';
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
// How to get the user token here as soap response. I would like to use the token to consume subsequent services
}
}
}
// Send the POST request
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xmlhttp.send(sr);
}
</script>
答案 0 :(得分:0)
这是答案:非常简单,但我尝试了不同的东西。这很有效。
<script type="text/javascript">
$(document).ready(function () {
$("#btnCallWebService").click(function (event) {
var wsUrl =
"https://Testsoapservice.com/Services/authentication.asmx";
xmlhttp.open('GET',
'https://Testsoapservice.com/Services/authentication.asmx?op=Login', true);
// build SOAP request
var sr = '<?xml version="1.0" encoding="utf-8"?>' +
'<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/">'+
'<soapenv:Body>' +
' <Login
xmlns="http://www.testsoapservice.com/Authentication/">'+
'<credentials>'+
'<Username>xxx</Username>'+
'<Passcode>xxxx</Passcode>'+
'</credentials>'+
'</Login>'+
'</soapenv:Body>' +
'</soapenv:Envelope>';
$.ajax({
type: "POST",
url: wsUrl,
contentType: "text/xml",
dataType: "xml",
data: soapRequest,
success: processSuccess,
error: processError
});
});
});
function processSuccess(data, status, req)
{
if (status == "success")
// $("#response").text($(req.responseXML).find("Value").text());
var uToken=$(req.responseXML).find("Value").text();
}