Мне удалось успешно вызвать вызов веб-службы, используя библиотеку 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>