2016-08-28 3 views
1

im new в этой области ИТ, и я занимаюсь apprentienship, целью этого appreintienship является создание приложения, которое извлекает данные с сервера, который запускает SOAP (к сожалению), это мой первый вызов gettin 'Некоторая информация о владельце внутри сервера. Вызов не работает (я точно написал sh * t в своем коде), и я не знаю, как его исправить и сделать лучший SOAP-вызов. Вот кодAngularJS SOAP Call

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(); 
    }; 
}); 

Спасибо вам все anticipately советы и подсказки!

ответ

0

SOAP - худшее, что может случиться с webapp.

Для наших приложений мы используем 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 
}); 

Вы также можете попробовать angular-soap плагин, который не работал для нас в светлячок. (тонкий хром).

+0

Спасибо за ответ, поэтому мне нужно написать только это, чтобы выполнить мыльный звонок? Или мне нужно добавить что-то еще, как запрос на мыло, которое я хочу выполнить? – Wallcraft

+0

в часы работы из моего комментария, я сделал это, и у меня появилась некоторая ошибка, которая заставляла меня подавляться и не могла идти в ногу с этим учеником. Вот кастовик кода, можете ли вы помочь мне выбраться из этого? https://plnkr.co/edit/ThP70IqhwhQumPd686Nw?p=info – Wallcraft

+0

EDIT: Наконец-то я могу общаться с сервером, он отрицает всю мою просьбу, но по крайней мере я могу общаться (это большой шаг вперед). Проблема в том, что сервер запускает SSL, поэтому мне нужно пройти аутентификацию. как я могу это сделать? Раньше я использовал библиотеку с угловым мылом. Вот код, который пересматривается. https://plnkr.co/edit/ThP70IqhwhQumPd686Nw?p=info Спасибо вам за помощь! – Wallcraft