Search code examples
javascriptnode.jssoap-client

Node JS: SOAP to query Java Web Services


I am trying to invoke Javaweb services from node js module. However, I get error in the wsdl library. Here is my wsdl file.

<!--
 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>

Here is my 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);
      });
  }); 

On running, I get the following error -

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

Is there any other way like jquery to call this java web service?

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

TypeError: Cannot read property 'sayHello' of undefined

Solution

  • What version of Node.js are you using? Array de-structuring is a newer feature I believe so if you are running an older version of Node.js it may not have this feature.

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

    It looks like Node 6.5 and up supports it.