【发布时间】: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