我是这个IT领域的新手,我正在做一个见习,这个见习的目标是制作一个从运行SOAP的服务器检索数据的应用程序(不幸的是),这是我第一次调用服务器中关于所有者的一些信息。调用不起作用(我在我的代码中肯定写了sh*t ),我不知道如何纠正它并进行更好的SOAP调用。下面是代码
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();
};
});
非常感谢大家给我的提示和提示!
发布于 2016-08-29 06:56:21
SOAP是webapp应用程序可能发生的最糟糕的事情。
对于我们的应用程序,我们使用javascript SOAP client library。
在你的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
});
你也可以尝试angular-soap插件,这个插件在火狐中不起作用。(在铬合金中很好)。
https://stackoverflow.com/questions/39196235
复制相似问题