Присвоение значения вложенному xml при использовании библиотеки SOAP npm - PullRequest
0 голосов
/ 12 ноября 2018

Мне удалось успешно вызвать вызов веб-службы, используя библиотеку soap npm (https://www.npmjs.com/package/soap)

То, что я хочу, это иметь возможность назначать значения, как я это делал, а затем вызывать веб-сервис, но я думаю, что это не будет работать, так как существуют повторяющиеся структуры XML и как мне отобразить мое значение, т.е. <adl:stops> - Может быть несколько остановок, так как мыло npm справляется с этим.

Документация, похоже, не говорит мне, как создать структуру JSON, которая позволит мне назначать значения для вызова веб-службы.

Любая помощь будет оценена.

Я использую node.js для создания вызова

Мой код:

var url = 'https://preprod.blackcab.ro/external-ws/adler/wsdl';
    var args = {
      login: 'xxxxxxx',
      password: 'xxxxxxxx'
    };

    var p = new Promise(function (resolve, reject) {

      console.log('....start');
      soap.createClient(url, function (err, client) {
        if (err) {
          console.log('..error', err);
          throw new Error(err);
        } else {

          client.Login(args, function (err, result) {
            if (err) {
              console.log('> error = ', err);
              reject();
            } else {
              console.log('>result = ', result);
              resolve(result);
            }

          });
        }
      });
    }); // promise

    return p;

Услуга определяется как

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:adl="http://www.haulmont.com/sherlock/adler">
   <soapenv:Header/>
   <soapenv:Body>
      <adl:LoginRequest>
         <adl:login>?</adl:login>
         <adl:password>?</adl:password>
      </adl:LoginRequest>
   </soapenv:Body>
</soapenv:Envelope>

Это было довольно легко ... теперь у меня возникают трудности с вызовом определения вложенной функции xml, т. Е.

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:adl="http://www.haulmont.com/sherlock/adler">
   <soapenv:Header/>
   <soapenv:Body>
      <adl:QuotationRequest>
         <adl:sessionId>?</adl:sessionId>
         <!--Optional:-->
         <adl:retailSessionId>?</adl:retailSessionId>
         <adl:job>
            <adl:accountNumber>?</adl:accountNumber>
            <!--Optional:-->
            <adl:pin>?</adl:pin>
            <!--Optional:-->
            <adl:caller>
               <!--Optional:-->
               <adl:individualId>?</adl:individualId>
               <adl:name>?</adl:name>
            </adl:caller>
            <adl:asap>?</adl:asap>
            <adl:serviceCode>?</adl:serviceCode>
            <!--Optional:-->
            <adl:jobDate>?</adl:jobDate>
            <adl:paymentType>?</adl:paymentType>
            <!--Optional:-->
            <adl:numberOfPassengers>?</adl:numberOfPassengers>
            <!--Optional:-->
            <adl:deadline>?</adl:deadline>
            <adl:routeInfo>
               <adl:destinationUnknown>?</adl:destinationUnknown>
               <adl:waitAndReturn>?</adl:waitAndReturn>
               <adl:asDirected>?</adl:asDirected>
               <!--Optional:-->
               <adl:asDirectedHours>?</adl:asDirectedHours>
            </adl:routeInfo>
            <!--Optional:-->
            <adl:promoCode>?</adl:promoCode>
            <!--Optional:-->
            <adl:creditCard>
               <!--Optional:-->
               <adl:id>?</adl:id>
               <!--Optional:-->
               <adl:startDate>?</adl:startDate>
               <!--Optional:-->
               <adl:expiryDate>?</adl:expiryDate>
               <!--Optional:-->
               <adl:holderName>?</adl:holderName>
               <!--Optional:-->
               <adl:number>?</adl:number>
               <!--Optional:-->
               <adl:cvcNumber>?</adl:cvcNumber>
               <!--Optional:-->
               <adl:issueNumber>?</adl:issueNumber>
               <!--Optional:-->
               <adl:billingAddress>
                  <!--Optional:-->
                  <adl:country>?</adl:country>
                  <!--Optional:-->
                  <adl:street>?</adl:street>
                  <!--Optional:-->
                  <adl:streetNumber>?</adl:streetNumber>
                  <!--Optional:-->
                  <adl:town>?</adl:town>
                  <!--Optional:-->
                  <adl:postcode>?</adl:postcode>
               </adl:billingAddress>
               <!--Optional:-->
               <adl:encryptedDetails>?</adl:encryptedDetails>
            </adl:creditCard>
            <!--Zero or more repetitions:-->
            <adl:actors>
               <!--Optional:-->
               <adl:individualId>?</adl:individualId>
               <!--Optional:-->
               <adl:name>?</adl:name>
               <!--Optional:-->
               <adl:telephone>?</adl:telephone>
               <!--Optional:-->
               <adl:email>?</adl:email>
               <adl:type>?</adl:type>
            </adl:actors>
            <!--Zero or more repetitions:-->
            <adl:references>
               <adl:entityName>?</adl:entityName>
               <!--Optional:-->
               <adl:value>?</adl:value>
            </adl:references>
            <!--Zero or more repetitions:-->
            <adl:specialInstructions>
               <adl:typeCode>?</adl:typeCode>
               <!--Optional:-->
               <adl:value>?</adl:value>
            </adl:specialInstructions>
            <!--Zero or more repetitions:-->
            <adl:stops>
               <adl:operationType>?</adl:operationType>
               <adl:address>
                  <adl:formattedAddress>?</adl:formattedAddress>
                  <adl:latitude>?</adl:latitude>
                  <adl:longitude>?</adl:longitude>
                  <!--Optional:-->
                  <adl:field0>?</adl:field0>
                  <!--Optional:-->
                  <adl:field1>?</adl:field1>
                  <!--Optional:-->
                  <adl:field2>?</adl:field2>
                  <!--Optional:-->
                  <adl:field3>?</adl:field3>
                  <!--Optional:-->
                  <adl:field4>?</adl:field4>
                  <!--Optional:-->
                  <adl:field5>?</adl:field5>
                  <!--Optional:-->
                  <adl:field6>?</adl:field6>
                  <!--Optional:-->
                  <adl:field7>?</adl:field7>
                  <!--Optional:-->
                  <adl:field8>?</adl:field8>
                  <!--Optional:-->
                  <adl:field9>?</adl:field9>
                  <!--Optional:-->
                  <adl:field10>?</adl:field10>
                  <!--Optional:-->
                  <adl:field11>?</adl:field11>
               </adl:address>
               <!--Optional:-->
               <adl:contact>
                  <!--Optional:-->
                  <adl:individualId>?</adl:individualId>
                  <!--Optional:-->
                  <adl:name>?</adl:name>
                  <!--Optional:-->
                  <adl:telephone>?</adl:telephone>
                  <!--Optional:-->
                  <adl:email>?</adl:email>
               </adl:contact>
               <!--Optional:-->
               <adl:airportDetails>
                  <adl:airportCode>?</adl:airportCode>
                  <!--Optional:-->
                  <adl:terminalCode>?</adl:terminalCode>
                  <!--Optional:-->
                  <adl:flightNumber>?</adl:flightNumber>
                  <adl:eta>?</adl:eta>
                  <!--Optional:-->
                  <adl:pickupTimeDelay>?</adl:pickupTimeDelay>
                  <!--Optional:-->
                  <adl:airline>?</adl:airline>
                  <!--Optional:-->
                  <adl:arrivalFrom>?</adl:arrivalFrom>
                  <!--Optional:-->
                  <adl:meetingPoint>?</adl:meetingPoint>
               </adl:airportDetails>
               <!--Optional:-->
               <adl:trainDetails>
                  <adl:trainStation>?</adl:trainStation>
                  <!--Optional:-->
                  <adl:meetingPoint>?</adl:meetingPoint>
                  <!--Optional:-->
                  <adl:pickupTimeDelay>?</adl:pickupTimeDelay>
                  <adl:eta>?</adl:eta>
                  <!--Optional:-->
                  <adl:arrivalFrom>?</adl:arrivalFrom>
                  <!--Optional:-->
                  <adl:trainNumber>?</adl:trainNumber>
               </adl:trainDetails>
               <!--Optional:-->
               <adl:notes>?</adl:notes>
            </adl:stops>
         </adl:job>
      </adl:QuotationRequest>
   </soapenv:Body>
</soapenv:Envelope>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...