Как отправить запрос SOAP в javascript, как в SoapUI - PullRequest
3 голосов
/ 05 апреля 2019

В настоящее время я работаю над проектом NodeJS, где мне нужно использовать файл soap / xml / wsdl.Проблема в том, что я не могу понять, как это работает, так что прости мое невежество.Вот что мне нужно:

У меня есть этот WSDL-сайт, на который мне нужно получить ответы.Я понял, как это сделать в SoapUI, но я не знаю, как это сделать в Javascript.Запрос, который я отправляю в soapUI, выглядит следующим образом:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:uni="https://uni-login.dk">
   <soap:Header/>
   <soap:Body>
      <uni:hentDataAftaler>
         <uni:wsBrugerid>?</uni:wsBrugerid>
         <uni:wsPassword>?</uni:wsPassword>
      </uni:hentDataAftaler>
   </soap:Body>
</soap:Envelope>

У меня также есть ссылка wsdl: https://wsiautor.uni -login.dk / wsiautor-v4 / ws? WSDL

Я также пытался использовать некоторые npm-пакеты в nodeJS (SOAP, Strong-SOAP и Easy-SOAP), но я тоже не могу заставить их работать.

Надеюсь, выесть некоторые предложения и скажите мне, если вам нужна дополнительная информация, чтобы ответить на мой вопрос:)

1 Ответ

1 голос
/ 21 апреля 2019

Вы можете использовать easy-soap-request, и эта статья https://medium.com/@caleblemoine/how-to-perform-soap-requests-with-node-js-4a9627070eb6 может помочь. Это просто тонкая обертка axios.

Мой код для вашего вопроса:

const soapRequest = require('easy-soap-request');
const url = 'https://wsiautor.uni-login.dk/wsiautor-v4/ws';
const headers = {
    'Content-Type': 'application/soap+xml;charset=UTF-8',
    'soapAction': 'https://wsiautor.uni-login.dk/hentDataAftaler',
};
// example data
const xml = `
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:uni="https://uni-login.dk">
   <soap:Header/>
   <soap:Body>
      <uni:hentDataAftaler>
         <uni:wsBrugerid>?</uni:wsBrugerid>
         <uni:wsPassword>?</uni:wsPassword>
      </uni:hentDataAftaler>
   </soap:Body>
</soap:Envelope>
`;


// usage of module
soapRequest(url, headers, xml).then(({response: {body, statusCode}}) => {
    console.log(body);
    console.log(statusCode);
}).catch((errorBody) => {
    console.error(errorBody);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...