节点SOAP WSDL请求不完整(只有一些块)

时间:2016-02-24 01:48:31

标签: xml node.js web-services soap request

我无法使用REST API npm模块访问SOAP Web服务。

以下是我正在尝试的内容:

var url = 'https://ws-uat.ewinerysolutions.com/2.00/EWSWebServices.asmx?wsdl';

soap.createClient(url, function(err, client) {
    if(err) {
        console.log(err);
    }
    console.log(client.describe());
}

这不会出错,但会记录一个空对象。检查client表明返回的XML被截断,这反过来又会阻止node-soap模块构建一个合适的客户端。 XML的确切长度以16348字节的数量波动。如果我移动WSDL以便它引用本地文件,那么client.describe()将按预期执行,并且还可以调用Web服务。但是,对此类请求的更长响应也会以类似的方式截断。这让我相信在收到所有数据块之前有些东西正在关闭连接,所以我检查了node-soap npm模块(也包含在节点中)。

为了解决问题,我尝试了request

var request = require('request');

var body = "";

request.get('https://ws-uat.ewinerysolutions.com/2.00/EWSWebServices.asmx?wsdl')
    .on('data', function(data){
        body += data;
    }).on('end', function() {
        console.log(body);  
    })

retrieving the WSDL using only the request module返回截断的XML正文。

我之前使用过这些相同的库,并且确保我已经尝试使用一系列旧版本的依赖库来运行相同的程序。

我对这些东西还很新,所以任何帮助/指针都会非常感激!

1 个答案:

答案 0 :(得分:3)

原来我需要添加连接:' keep-alive'到请求标头。在node-soap库中,这可以直接在lib / http.js中设置:46。