Node.js:如何使用SOAP XML Web服务消费

12 浏览
0 Comments

Node.js:如何使用SOAP XML Web服务消费

请问如何在node.js中以最佳方式消费SOAP XML网络服务?

谢谢!

0
0 Comments

在使用`node-soap`时遇到问题,无法正常工作,而且该模块没有免费的支持,只有付费的支持,这超出了我的资源范围。因此,我采取了以下步骤:

1. 在我的Linux机器上下载了`SoapUI`。

2. 将WSDL xml文件复制到本地文件。

`curl http://192.168.0.28:10005/MainService/WindowsService?wsdl > wsdl_file.xml`

3. 在SoapUI中,我点击`File > New Soap project`,然后上传了我的`wsdl_file.xml`文件。

4. 在导航器中展开一个服务,右键点击请求,然后点击`Show Request Editor`。

然后,我可以发送请求并确保它正常工作,还可以使用`Raw`或`HTML`数据来帮助我构建外部请求。

以下是来自SoapUI的请求的`Raw`部分:

POST http://192.168.0.28:10005/MainService/WindowsService HTTP/1.1

Accept-Encoding: gzip,deflate

Content-Type: text/xml;charset=UTF-8

SOAPAction: "http://Main.Service/AUserService/GetUsers"

Content-Length: 303

Host: 192.168.0.28:10005

Connection: Keep-Alive

User-Agent: Apache-HttpClient/4.1.1 (java 1.5)

以下是来自SoapUI的请求的XML部分:


   
   
      
         
      
   

我使用上述内容构建了以下`node` `request`:

var request = require('request');
let xml =
`
   
   
      
         
      
   
`
var options = {
  url: 'http://192.168.0.28:10005/MainService/WindowsService?wsdl',
  method: 'POST',
  body: xml,
  headers: {
    'Content-Type':'text/xml;charset=utf-8',
    'Accept-Encoding': 'gzip,deflate',
    'Content-Length':xml.length,
    'SOAPAction':"http://Main.Service/AUserService/GetUsers"
  }
};
let callback = (error, response, body) => {
  if (!error && response.statusCode == 200) {
    console.log('Raw result', body);
    var xml2js = require('xml2js');
    var parser = new xml2js.Parser({explicitArray: false, trim: true});
    parser.parseString(body, (err, result) => {
      console.log('JSON result', result);
    });
  };
  console.log('E', response.statusCode, response.statusMessage);  
};
request(options, callback);

但是,我得到了405方法不允许的响应代码`response.statusCode`和响应消息`response.statusMessage`。你知道如何解决吗?

我的URL有问题。我使用的是原始URL,而不是由SOAPUI生成的端点URL。谢谢你提供的代码。

0
0 Comments

Node.js: 如何消费SOAP XML Web服务

在使用Node.js消费SOAP XML Web服务时,可能会遇到以下问题:

问题原因:

- 目前尚未找到适用于Node.js的可靠SOAP库,无法正确处理所有API请求。

解决方法:

1. 使用工具如SoapUI(http://www.soapui.org)记录输入和输出的XML消息。

2. 使用Node.js的请求库(https://github.com/mikeal/request)构建输入的XML消息,并将请求(POST)发送到Web服务。可以使用标准的JavaScript模板机制(如ejs(http://embeddedjs.com/)或mustache(https://github.com/janl/mustache.js))来帮助构建XML消息。

3. 使用XML解析器将响应数据反序列化为JavaScript对象。

虽然这种方法有点“脏”和低级,但应该能够正常工作。目前来说,这是与Node.js交互的SOAP最可靠的方法。

以下是一些用户的评论和经验分享:

- "Form input xml"意味着将Content-Type设置为"text/xml"。

- 有用户表示放弃了node-soap,采用了上述建议,并获得了成功的结果。

- 有用户无法正确发送带有psx证书的请求,最终采用了使用https和node-xml2js库的方法。

虽然消费SOAP XML Web服务在Node.js中可能会遇到一些问题,但使用以上方法可以解决这些问题。

0
0 Comments

问题:如何在Node.js中消费SOAP XML web服务?

原因:在安装node-soap时出现了node-expat安装失败的问题。需要安装expat开发头文件来构建它。

解决方法:可以通过操作系统的软件包管理工具来获取expat开发头文件。例如,在Ubuntu上可以使用以下命令进行安装:

sudo apt-get install libexpat1-dev

另外,也可以尝试使用strong-soap来消费web服务,它是基于node-soap的,并且解决了一些关于消费具有空参数的web服务的问题。

如果使用node-soap仍然存在问题,可以尝试手动创建请求。

0