Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 如何强制命名空间前缀使用?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用一个SOAP Webservice,但是WSDL是破碎的,所以我必须做一些自定义node-soap.

我想要的理想的SOAP信封是这样的

<Envelope xmlns="http://scheR_495_11845@as.xmlsoap.org/soap/envelope/">
    <Body>
        <getImagesDeFinition xmlns="http://services.example.com/"/>
    </Body>
</Envelope>

到目前为止,这是nodejs代码我必须调用的服务:

var soap = require('soap');
var url = 'http://www.example.com/services/imagesizes?wsdl';

soap.createClient(url,function(err,client) {

    client.setEndpoint('http://www.example.com/services/imagesizes');
    client.getImagesDeFinition(null,result) {
        console.log(result);
    });
    console.log(client.lastrequest)

});

我必须手动设置端点,因为它在WSDL文件中被破坏

在打印client.lastrequest时我得到的信封是:

<soap:Envelope xmlns:soap="http://scheR_495_11845@as.xmlsoap.org/soap/envelope/" 
               xmlns:xsi="http://www.w3.org/2001/XMLscheR_495_11845@a-instance"  
               xmlns:tns="http://services.example.com/">
    <soap:Body>
        <getImagesDeFinition />
    </soap:Body>
</soap:Envelope>

我知道如果我可以强制在机体上使用命名空间前缀来使用< tns:getImagesDeFinition />而不是< getImagesDeFinition />该请求工作完美.

有没有办法强迫它?

我读了文档,说tns是一个@L_607_12@认忽略的命名空间,所以我试图通过这样做来改变:

var options = {
    ignoredNamespaces: {
        namespaces: [],override: true
    }
}

并将该对象发送到soap.createClient方法,但是我看到Envelope没有任何区别.

有没有我强迫这个?或者达到理想的SOAP信封?

谢谢!

解决方法

请参阅 this主题讨论同样的问题在github:

特别是
 https://github.com/vpulim/node-soap/issues/537#issuecomment-72041420

@H_262_51@

大佬总结

以上是大佬教程为你收集整理的node.js – 如何强制命名空间前缀使用?全部内容,希望文章能够帮你解决node.js – 如何强制命名空间前缀使用?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。