我是这个IT领域的新人,我正在做一个apprentienship,这个appreintienship的目标是制作一个应用程序,从运行SOAP的服务器(不幸的是)检索数据,这是我的第一个呼唤gettin'关于服务器内所有者的一些信息。这个电话不起作用(我确实在我的代码中写了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();
};
});
非常感谢大家的提示和提示!
答案 0 :(得分:1)
SOAP是Web应用程序可能发生的最糟糕的事情。
对于我们的应用,我们使用javascript SOAP client library。
在角度应用程序中,您需要创建一个带有工厂的模块:
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中无法使用的angular-soap插件。 (镀铬很好)。