我试图在Internet上的许多站点(也在此处)中找到此解决方案,但未成功。 我还访问了社区支持的Gitter室(https://gitter.im/vpulim/node-soap),但没有成功。
我几乎没有想到要忘记stackoverflow,因为我从来没有找到问题的答案,老实说,我不是一个在尝试我的最大努力之前就寻求帮助的人。我的问题已经被这样处理了。所以,最后一次尝试!
我正在尝试使用soap npm软件包来访问受保护的SOAP端点。实际上,此端点具有两种保护,即通过IP和使用特定证书(即设备证书)的请求。
有了此证书,我可以通过浏览器正确访问端点,并且还检查了公司防火墙上的所有请求(浏览器和通过Node.JS)是否都到达了端点。
我虽然可能是与我的机器有关的问题,因为证书类型是设备,并且可能具有这种验证,所以我将代码运行在如今拥有证书的服务器上,并调用此端点通过Java应用程序。
错误是相同的,我不清楚。我无法对此调查进行深入研究。错误是:
Error: This socket is closed
at TLSSocket.Socket._writeGeneric (net.js:679:19)
at TLSSocket.<anonymous> (net.js:669:12)
at TLSSocket.g (events.js:292:16)
at emitNone (events.js:91:20)
at TLSSocket.emit (events.js:185:7)
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1073:10)
代码是:
import {createClient} from 'soap';
import {readFileSync} from 'fs';
const client = createClient('https://myprotectedendpoint.com/ws/xpto/XptoSearch.asmx?wsdl', {
wsdl_options: {
pfx: readFileSync('./certs/mycert.pfx'),
passphrase: 'MySecret',
ciphers: 'TLS_RSA_WITH_3DES_EDE_CBC_SHA',
}
}, function(err, client) {
if (err) {
console.log(err);
} else {
console.log(client);
}
})
有人可以尝试帮助我找到更好的调查方法吗?
真的很感谢您的宝贵时间。