Поддержка интеграции SOAP API - PullRequest
0 голосов
/ 16 октября 2019

Добрый день, StackOverflow, в настоящее время я интегрирую SOAP API проверки кредитоспособности, мне дали пример кода без файла package.json , поэтому я понятия не имею, что такое среда разработки. Вот пример кода, который мне дали:

var request = require('request');
var fs = require('fs');
var bsplit = require('buffer-split');

//process.env.http_proxy = 'http://host:port';

var xmlData = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://webServices/">' +
    '<soapenv:Header/>' +
    '<soapenv:Body>' +
    '   <web:DoNormalEnquiryStream>' +
    '       <request>' +
    '           <pUsrnme>*****</pUsrnme>' +
    '           <pPasswrd>*****</pPasswrd>' +
    '           <pVersion>1.0</pVersion>' +
    '           <pOrigin>QA-SOAPUI</pOrigin>' +
    '           <pOrigin_Version>1.0</pOrigin_Version>' +
    '           <pInput_Format>XML</pInput_Format>' +
    '           <pTransaction>' +
    '               <![CDATA[<Transactions>' +
    '                   <Search_Criteria>' +
    '                       <CS_Data>Y</CS_Data>' +
    '                       <CPA_Plus_NLR_Data>Y</CPA_Plus_NLR_Data>' +
    '                       <Deeds_Data>N</Deeds_Data>' +
    '                       <Directors_Data>N</Directors_Data>' +
    '                       <Identity_number></Identity_number>' +
    '                       <Surname></Surname>' +
    '                       <Forename></Forename>' +
    '                       <Forename2/>' +
    '                       <Forename3/>' +
    '                       <Gender>M</Gender>' +
    '                       <Passport_flag>N</Passport_flag>' +
    '                       <DateOfBirth>19820914</DateOfBirth>' +
    '                       <Address1></Address1>' +
    '                       <Address2></Address2>' +
    '                       <Address3/><Address4/>' +
    '                       <PostalCode></PostalCode>' +
    '                       <HomeTelCode/>' +
    '                       <HomeTelNo/>' +
    '                       <WorkTelCode/>' +
    '                       <WorkTelNo/>' +
    '                       <CellTelNo/>' +
    '                       <ResultType>JPDF2</ResultType>' +
    '                       <RunCodix>N</RunCodix>' +
    '                       <Adrs_Mandatory>N</Adrs_Mandatory>' +
    '                       <Enq_Purpose>12</Enq_Purpose>' +
    '                       <Run_CompuScore>N</Run_CompuScore>' +
    '                       <ClientConsent>Y</ClientConsent>' +
    '                       </Search_Criteria>' +
    '            </Transactions>]]>' +
    '          </pTransaction>' +
    '       </request>' +
    '   </web:DoNormalEnquiryStream>' +
    '   </soapenv:Body>' +
    '   </soapenv:Envelope>';

request({
    url: "api.myapiurl.com/soap-api",
    encoding:null,
    method: "POST",
    headers: {
        "content-type": "text/xml"
    },
    body: xmlData
}, function (error, response, body){

    var delim = new Buffer('--uuid');
    var result = bsplit(body,delim);

    var attBuffs = [];
    var attBuffsStartIndex = [];

    for(var i = 0; i < result.length; i++){
        if(result[i].toString().indexOf("Content-Type: application/octet-stream") > 0){
            attBuffs.push(result[i]);
            var trimmedString = result[i].toString();
            attBuffsStartIndex.push(trimmedString.indexOf("Content-Transfer-Encoding: binary")+37);
        }
    }

    fs.open('JsonFile.json', 'w', function (err, fd) {
        if (err) {
            throw 'error opening file: ' + err;
        }

        fs.write(fd, attBuffs[0], attBuffsStartIndex[0], attBuffs[0].length - attBuffsStartIndex[0], null, function (err) {
            if (err) throw 'error writing file: ' + err;
            fs.close(fd, function () {
                console.log('JSON File written to file');
            })
        });
    });

    fs.open('PdfFile.pdf', 'w', function (err, fd) {
        if (err) {
            throw 'error opening file: ' + err;
        }

        fs.write(fd, attBuffs[1], attBuffsStartIndex[1], attBuffs[1].length - attBuffsStartIndex[1], null, function (err) {
            if (err) throw 'error writing file: ' + err;
            fs.close(fd, function () {
                console.log('PDF File written to file');
            })
        });
    });
});

У меня возникли некоторые трудности при запуске этого кода. Я подумал, что ему может понадобиться [RequireJS API], но после некоторых исследований я твердо убежден, что на самом деле это Запрос HTTP-клиента . Я действительно изо всех сил пытался запустить этот пример кода. Любая помощь будет принята с благодарностью!


Добавление Я знаю, что для этого требуется nodejs. Но я не смог выяснить, как продвигаться дальше.


Добавление

Если кому-то интересны модули нативных узлов, такие как net, fs и т. д. не предназначены для запуска из браузера, поэтому этот код все равно не будет работать.

1 Ответ

1 голос
/ 16 октября 2019

1. Создайте каталог проекта

mkdir ~/projects/credit

(Если ~/projects не существует, сначала создайте его с помощью mkdir ~/projects или создайте новый каталог, где хотите.)

2. Перейдите в новый каталог

cd ~/projects/credit

2. Создайте файл для примера кода

touch sample.js

3. Вставьте ваш пример кода в файл sample.js

4. Установите запрос и пакеты с разделением по буферу

npm install request buffer-split

Это должно создать файл package.json в каталоге вашего нового проекта вместе с каталогом node_modules с установленныммодули.

5. Запустите файл

Если у вас установлен Node ...

node sample.js

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...