对 SOAP Web 服务的 JQuery AJAX 调用 - 访问被拒绝。在 SOAP UI 中工作
Posted
技术标签:
【中文标题】对 SOAP Web 服务的 JQuery AJAX 调用 - 访问被拒绝。在 SOAP UI 中工作【英文标题】:JQuery AJAX call to SOAP Web Service - Access denied. Working in SOAP UI 【发布时间】:2013-08-12 15:46:00 【问题描述】:对 SOAP Web 服务的 JQuery AJAX 调用将异常抛出为“拒绝访问”。见截图。它在 SOAP UI 中工作,因此 SOAP 请求似乎是正确的。请帮助查找问题并进行修复。
我的其他代码截图-http://tinypic.com/r/2liasgl/5
<!DOCTYPE html>
<html>
<head>
<title>Calling Web Service from jQuery</title>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
<script type="text/javascript">
$(document).ready(function ()
jQuery.support.cors = true;
$("#btnCallWebService").click(function (event)
var wsUrl = "https://webservices..myservice.../";
var soapRequest = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:dictionary:com.myservice.webservices"><soapenv:Header xmlns:wsse="http://myservice.org/wss/2004/01/myservice-1.0.xsd"><wsse:Security soapenv:mustUnderstand="1"><wsse:UsernameToken><wsse:Username>efhueeudedujed</wsse:Username><wsse:Password Type="http://myservice-wss-username-token-profile-1.0#PasswordText">dfdjfhdkjfa</wsse:Password></wsse:UsernameToken></wsse:Security></soapenv:Header><soapenv:Body><urn:getETNInstances/></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("HelloResult").text());
function processError(data, status, req)
alert(req.responseText + " " + status);
</script>
</head>
<body>
<h3>
Calling Web Services with jQuery/AJAX
</h3>
Enter your name:
<input id="txtName" type="text" />
<input id="btnCallWebService" value="Call web service" type="button" />
<div id="response" />
</body>
</html>
【问题讨论】:
【参考方案1】:可能的问题是:
您正在使用绝对网址(带有https://serverdomain
)。一些浏览器会阻止绝对 url,即使它们不是跨域请求。如果您不发出跨域请求,请尝试使用相对 url(不带 https://serverdomain
)。
如果上述方法不起作用,另一个可能的问题是您正在执行跨域请求。如果需要执行跨域请求,则需要使用JSONP、CORS等技术。
【讨论】:
@Atal Shrivastava:对不起,我不明白你的意思。 $("#response").text($(req.responseXML).find("HelloResult").text());在这一行中,我们调用了“HelloResult”的文本。但是代替普通文本,如果它是生成 xml 的字符串,我们如何从该 xml 中获取值。并且可以读取Dataset。 @Atal Shrivastava:你的意思是 .html() 吗?$("#response").text($(req.responseXML).find("HelloResult").html());
@Kahn 请看question以上是关于对 SOAP Web 服务的 JQuery AJAX 调用 - 访问被拒绝。在 SOAP UI 中工作的主要内容,如果未能解决你的问题,请参考以下文章
html 此代码块使用工作流Web服务为javascript启动工作流,jquery运行soap操作