2017-04-26 37 views
7

के साथ SOAP एपीआई को डेटा पोस्ट करें मैं साबुन एपीआई में डेटा पोस्ट करने की कोशिश कर रहा हूं लेकिन ऐसा करने में असमर्थ हूं। मैंने सभी संभावित तरीकों का प्रयास किया है लेकिन फिर भी मुझे एपीआई कॉल करते समय त्रुटि मिलती है।कोणीय जेएस

मेरी एपीआई है - http://xyz.asmx?op=UserRegistration

और ऐसा लगता है

<?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:Body> 
    <UserRegistration xmlns="http://Service/"> 
     <Usercreditional>string</Usercreditional> 
    </UserRegistration> 
    </soap:Body> 
</soap:Envelope> 

बातें मैं कोशिश की है XML स्वरूप में डेटा excepts ->

1 $ http.post

var soapData = '<?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:Body>'+ 
    '<UserRegistration xmlns="http://Service/">'+ 
    '<Usercreditional>[{ \'DeviceUUID\': \'' + data.DeviceUUID + '\', ' +   
         "\"DevicePushID\":\"" + data.DevicePushID + "\"}]" + 
        '</Usercreditional></UserRegistration></soap:Body></soap:Envelope>'; 

return $http({ 
      method: 'POST', 
      url: ' http://xyz.asmx?op=UserRegistration', 
      data : soapData, 
      headers : { "Content-Type" : 'application/xml'} 
     }); 
के साथ

यह त्रुटि देता है "अनुरोध संसाधित करने में असमर्थ। --- > रूट तत्व "याद आ रही है

2> SOAPClient

साथ
var deferred = $q.defer(); 
var soapParams = new SOAPClientParameters(); 
var userCredentials = [{"DeviceUUID": data.DeviceUUID, "DevicePushID": data.DevicePushID}]; 
for (var param in userCredentials) 
    { 
     soapParams.add(param, soapParams[param]); 
    } 
var soapCallback = function (e) { 
    if (e.constructor.toString().indexOf("function Error()") != -1) { 
     deferred.reject(e); 
     } else { 
     deferred.resolve(e); 
      } 
     };  SOAPClient.invoke(' http://xyz.asmx', 'UserRegistration', soapParams, true, soapCallback); 
     return deferred.promise; 

इस है त्रुटि है अशक्त की संपत्ति पढ़ा नहीं जा सकता 'getElementsByTagName'

किसी को भी मुझे इस एक में मदद कृपया कर सकते हैं? की कोशिश की अभी भी लगभग सब कुछ नहीं भाग्य। अग्रिम

उत्तर

5
  1. में धन्यवाद $ http.post
  2. ०१२३५१६४१०६ के साथ

आप नीचे दिए गए के रूप में सोप एपीआई के लिए डेटा पोस्ट करने के लिए $ http सेवा का उपयोग कर सकते हैं:

enter image description here

var headers = { 
       'Content-Type': 'text/xml; charset=utf-8' 
      }; 
return $http({ 
       method: 'POST', 
       url: 'http://providerservice.fmcnetwork.net/MobileAppService.asmx?op=UserRegistration', 
       data : soapData, 
       headers : headers 
      }); 
  1. साथ angular-soap

आप SOAP क्लाइंट के शीर्ष पर बनाए गए प्लगइन angular-soap का उपयोग भी कर सकते हैं और $ साबुन का उपयोग कर सकते हैं इसे प्राप्त करने के लिए सेवा।

उदाहरण के लिए:

angular.module('myApp', ['angularSoap']) 

.factory("testService", ['$soap',function($soap){ 
    var base_url = "http://www.cooldomain.com/SoapTest/webservicedemo.asmx"; 

    return { 
     CreateUser: function(firstName, lastName){ 
      return $soap.post(base_url,"CreateUser", {firstName: firstName, lastName: lastName}); 
     } 
    } 
}]) 

.controller('MainCtrl', function($scope, testService) { 

    testService.CreateUser($scope.firstName, $scope.lastName).then(function(response){ 
    $scope.response = response; 
    }); 

}) 
2

प्रयास करें इस :) अपने कोड से

var soapData = '<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">'+ 
    '<Body>'+ 
    '<UserRegistration xmlns="http://FmcMobileApplicationService/">'+ 
    '<Usercreditional>{ \'DeviceUUID\': \'' + data.DeviceUUID + '\', ' +   
         "\"DevicePushID\":\"" + data.DevicePushID + "\"}" + 
        '</Usercreditional></UserRegistration></Body></Envelope>'; 

return $http({ 
      method: 'POST', 
      url: 'http://providerservice.fmcnetwork.net/MobileAppService.asmx' 
      data : soapData, 
      headers : { "Content-Type" : 'application/xml'} 
     }); 

परिवर्तन

  • xml शीर्ष
  • बदला गया साबुन नहीं भेजा था: करने के लिए लिफाफा लिफाफा
  • स्कीमा नामस्थान
  • नाम बदलकर साबुन बाहर लिया: शरीर शरीर के लिए
  • क्वेरी स्ट्रिंग
  • एक वस्तु { "DeviceUUID": "1", "DevicePushID": "2"} भेजा बिना MobileAppService.asmx को प्रकाशित किया गया था नहीं एक सरणी

मुझे एक प्रतिक्रिया मिली।यह एक बार खाली था लेकिन असली एक :) मैंने क्रमशः डिवाइसयूयूआईडी और डिवाइस पुशिड के रूप में 1 और 2 का उपयोग किया। इसलिए मुझे लगता है कि एक खाली प्रतिक्रिया।

प्रतिक्रिया:

<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Body> 
     <UserRegistrationResponse xmlns="http://FmcMobileApplicationService/"> 
      <UserRegistrationResult>[]</UserRegistrationResult> 
     </UserRegistrationResponse> 
    </soap:Body> 
</soap:Envelope>