Javascript AngularJS SOAP调用
我是IT领域的新手,我正在做一个apprenship,这个apprenship的目标是制作一个从运行SOAP的服务器检索数据的应用程序(不幸的是),这是我第一次要求获取服务器内部所有者的信息。这个调用不起作用(我在代码中肯定写了sh*t),我不知道如何更正它并进行更好的SOAP调用。 这是密码Javascript AngularJS SOAP调用,javascript,angularjs,soap,Javascript,Angularjs,Soap,我是IT领域的新手,我正在做一个apprenship,这个apprenship的目标是制作一个从运行SOAP的服务器检索数据的应用程序(不幸的是),这是我第一次要求获取服务器内部所有者的信息。这个调用不起作用(我在代码中肯定写了sh*t),我不知道如何更正它并进行更好的SOAP调用。 这是密码 var myApp = angular.module('myApp', []); myApp.controller('myCtrl', function($scope,$http) { var s
var myApp = angular.module('myApp', []);
myApp.controller('myCtrl', function($scope,$http) {
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/">' +
'<soap:Header>' +
'<AuthHeader xmlns="Logisense_EngageIP">' +
'<Username>admin</Username>' +
'<Password>admin</Password>' +
'</AuthHeader>' +
'</soap:Header>' +
'<soap:Body>' +
'<GetOwnersUsers xmlns="Logisense_EngageIP">' +
'<ownerUsername>string</ownerUsername>' +
'</GetOwnersUsers>' +
'</soap:Body>' +
'</soap:Envelope>';
var soapResponse = null;
function makeSoap(){
$http.post('31.44.16.67/GetOwnersUsers', sr)
.success(function(data) {
soapResponse = data;
$scope.response = soapResponse;
});
}
$scope.callSoap = function(){
$scope.soapRequest = sr;
makeSoap();
};
});
var myApp=angular.module('myApp',[]);
控制器('myCtrl',函数($scope,$http){
var sr=
'' +
'' +
'' +
'' +
“管理员”+
“管理员”+
'' +
'' +
'' +
'' +
'字符串'+
'' +
'' +
'';
var-soapResponse=null;
函数makeSoap(){
$http.post('31.44.16.67/GetOwnersUsers',sr)
.成功(功能(数据){
soapResponse=数据;
$scope.response=soapResponse;
});
}
$scope.callSoap=function(){
$scope.soapRequest=sr;
makeSoap();
};
});
谢谢大家的提示和提示 SOAP是Web应用程序可能发生的最糟糕的事情 对于我们的应用程序,我们使用 在angular应用程序中,您需要创建一个带有工厂的模块:
angular.module('angularSoap', []).factory("$soap", [ '$q', "$http", function($q, $http) {
return {
post : function(action, params) {
var deferred = $q.defer();
var soapParams = new SOAPClientParameters();
for ( var param in params) {
soapParams.add(param, params[param]);
}
var soapCallback = function(e) {
if (e.constructor.toString().indexOf("function Error()") != -1) {
deferred.reject(e);
} else {
deferred.resolve(e);
}
}
SOAPClient.invoke('http://31.44.16.67/GetOwnersUsers', action, soapParams, true, soapCallback);
return deferred.promise;
}
}
} ]);
您需要在主应用程序中注入angularSoap
angular.module('yourApp', ['angularSoap']);
然后您将可以访问$soap
服务
return $soap.post("ws:authentificationRequestParameter", {
login : login,
password : password,
autoLog : autoLog
});
你也可以试试firefox中不适合我们的插件。(在chrome中很好)。谢谢你的回复,所以我只需要写这个来执行soap调用?或者我需要添加一些其他的东西,比如我想要执行的soap请求?在我评论的工作时间里,我这样做了,并且我得到了一些错误,这些错误使我沮丧,无法跟上这个进度。这是密码的破坏者,你能帮我摆脱这个吗?编辑:最后我可以和服务器通信了,他拒绝了我的所有请求,但至少我可以通信(这是向前迈出的一大步)。现在的问题是服务器运行SSL,所以我需要对自己进行身份验证。我怎么能做到?我使用了您以前链接的angular soap库。这是重新访问的代码。谢谢你的帮助@Wallcraft看起来有一个$soap.setCredentials(“用户名”、“密码”);方法。不知道如何确保它的安全…好吧,不管我的服务器使用SSL,我发现了一个带有一些简单API的公共web服务器。我尝试执行SOAP调用,在控制台中出现以下错误->“XMLHttpRequest无法加载。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问Origin“null”。以及“Uncaught TypeError:无法读取null的属性‘documentElement’”下面是代码