javascript - AngularJS SOAP 调用

标签 javascript angularjs soap

我是 IT 领域的新手,我正在做学徒,这个学徒的目标是制作一个从运行 SOAP 的服务器检索数据的应用程序(不幸的是),这是我第一次要求获取一些信息关于服务器内的所有者。该调用不起作用(我肯定在代码中写了一些狗屎),并且我不知道如何纠正它并进行更好的 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();
    };
});

感谢大家的提示和提示!

最佳答案

SOAP 是 Web 应用程序可能发生的最糟糕的事情。

对于我们的应用程序,我们使用 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;
        }
    }
} ]);

您需要在主应用程序中注入(inject)angularSoap

angular.module('yourApp', ['angularSoap']);

然后您将可以访问 $soap 服务。

return $soap.post("ws:authentificationRequestParameter", {
    login : login,
    password : password,
    autoLog : autoLog
});

您还可以尝试angular-soap这个插件在 Firefox 中对我们不起作用。 ( Chrome 效果很好)。

关于javascript - AngularJS SOAP 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39196235/

相关文章:

javascript - 如何异步加载 CSS - WordPress

javascript - 为什么 vuelidate 验证器不再对输入变化使用react?

javascript - 如何在表单 Serialize() ajax 中包含提交按钮名称和值

api - 如何从响应中提取 token 并将其传递给 SOAPUI 中的下一个 api 请求

java - 如何让 onFocus() 用 Selenium 触发

javascript - 如何防止手动更改 uib-datepicker 大于 max-date 的日期

angularjs - 防止在父元素上触发 Angular Material md-swipe-left/md-swipe-right 指令的功能

javascript - AngularJs jQuery : Add HTML dynamically

java - 由于异常 : Unable to create StAX reader or writer at com. sun.xml.internal.ws.encoding.SOAPBindingCodec.decode,无法创建 SOAP 消息

web-services - Delphi XE 的 SOAP 服务器和客户端应用程序 VCL+indy 演示?