【问题标题】:Node JS: SOAP to query Java Web ServicesNode JS:查询 Java Web 服务的 SOAP
【发布时间】:2018-12-20 00:47:20
【问题描述】:

我正在尝试从节点 js 模块调用 Javaweb 服务。但是,我在 wsdl 库中遇到错误。这是我的 wsdl 文件。

<!--
 Published by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. 
--><!--
 Generated by JAX-WS RI (http://jax-ws.java.net). RI's version is JAX-WS RI 2.2.9-b130926.1035 svn-revision#5f6196f2b90e9460065a4c2f4e30e065b245e51e. 
--><definitions targetNamespace="http://jaxws.joshis1.com/" name="webServiceImplService"><types><xsd:schema><xsd:import namespace="http://jaxws.joshis1.com/" schemaLocation="http://localhost:8888/webservice/helloworld?xsd=1"/></xsd:schema></types><message name="sayHello"><part name="parameters" element="tns:sayHello"/></message><message name="sayHelloResponse"><part name="parameters" element="tns:sayHelloResponse"/></message><portType name="IwebServiceInterface"><operation name="sayHello"><input wsam:Action="http://jaxws.joshis1.com/IwebServiceInterface/sayHelloRequest" message="tns:sayHello"/><output wsam:Action="http://jaxws.joshis1.com/IwebServiceInterface/sayHelloResponse" message="tns:sayHelloResponse"/></operation></portType><binding name="webServiceImplPortBinding" type="tns:IwebServiceInterface"><soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/><operation name="sayHello"><soap:operation soapAction=""/><input><soap:body use="literal"/></input><output><soap:body use="literal"/></output></operation></binding><service name="webServiceImplService"><port name="webServiceImplPort" binding="tns:webServiceImplPortBinding"><soap:address location="http://localhost:8888/webservice/helloworld"/></port></service></definitions>

这是我的 test.js

  var soap = require('soap');
  var url = 'http://localhost:8888/webservice/helloworld?wsd';
  var args = {sayHello: 'ABC'};
  soap.createClient(url, function(err, client) {
      client.MyFunction(args, function(err, result) {
          console.log(result);
      });
  }); 

在运行时,我收到以下错误 -

node_modules/soap/lib/wsdl.js:68
  const [topLevelName] = nsName.split('|');
        ^

SyntaxError: Unexpected token [
    at exports.runInThisContext (vm.js:53:16)
    at Module._compile (module.js:374:25)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Module.require (module.js:354:17)
    at require (internal/module.js:12:17)

$node --version v4.2.6

有没有像 jquery 这样的其他方式来调用这个 java web 服务?

node test.js 
/home/sjoshi/test.js:5
      client.sayHello(args, function(err, result) {
             ^

TypeError: Cannot read property 'sayHello' of undefined

【问题讨论】:

    标签: javascript node.js soap-client


    【解决方案1】:

    您使用的是哪个版本的 Node.js?我相信数组解构是一个较新的特性,所以如果你运行的是旧版本的 Node.js,它可能没有这个特性。

    http://kangax.github.io/compat-table/es6/#node6_5

    看起来 Node 6.5 及更高版本支持它。

    【讨论】:

    • $node --version v4.2.6
    • 但是,我遇到了另一个错误,比如它无法读取的属性。
    • 因此,您尝试使用的软件包似乎需要更新版本的 Node,因此请尝试升级。 client 上的 TypeError: Cannot read property 'sayHello' of undefined 的原因是因为第一个错误导致 client 永远不会正确创建。升级 Node 后,这两个问题都应该得到解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-21
    • 2014-01-29
    • 2018-08-20
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    • 2016-09-14
    相关资源
    最近更新 更多