【问题标题】:SOAP API Integration AssistanceSOAP API 集成协助
【发布时间】:2019-10-16 05:42:50
【问题描述】:

早安 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],但经过一些研究后,我坚信它实际上是 Request HTTP Client。我真的很难让这个示例代码运行。任何帮助将不胜感激!


加法 我知道这需要nodejs。但我一直无法弄清楚如何从那里取得进展。


加法

如果有人对 net、fs 等原生节点模块感兴趣,它们并不意味着要从浏览器运行,所以这段代码无论如何都不会工作。

【问题讨论】:

    标签: javascript soap


    【解决方案1】:

    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

    【讨论】:

    • 谢谢@Troy Carlson,您的回答确实为我指明了正确的方向。我使用 npm 和 webpack 启动了一个项目,在测试服务器上运行它,我似乎走得更远了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多