Search code examples
node.jsweb-servicesnode-soapstrong-soap

How do you get the server url to give to the client when using Node-soap or Strong-soap


I am writing a service with node.js' node-soap package. The service seem to run okay when I do "node myService.js". Now, how do I get the url that would be given to the client? If you want my wsdl file, "myservice.wsdl" as per the code below please let me know. here is my code

var http = require('http');
var soap = require('soap');
var express = require('express');
var bodyParser = require('body-parser');

var myService = {
     MyService: {
         MyPort: {
             post_csvDoc: function(csvDoc) {
                 return 200;
             },
             post_jsonDoc: function(csvDoc) {
                 return 200;
             },
             post_pdfDoc: function(csvDoc) {
                 return 200;
             },
             get_csvDoc: function(month) {
                 return "FirstDoc";
             },
             get_jsonDoc: function(month) {
                 return "SecondDoc";
             },
             get_pdfDoc: function(month) {
                 return "ThirdDoc";
             },
         }
     }
};

var xml = require('fs').readFileSync('myservice.wsdl', 'utf8');

//http server example
var server = http.createServer(function(request,response) {
    response.end('404: Not Found: ' + request.url);
});

server.listen(8000);
soap.listen(server, '/wsdl', myService, xml);

//express server example
var app = express();
//body parser middleware are supported (optional)
app.use(bodyParser.raw({type: function(){return true;}, limit: '5mb'}));
app.listen(8001, function(){
    //Note: /wsdl route will be handled by soap module
    //and all other routes & middleware will continue to work
    soap.listen(app, '/wsdl', myService, xml);
});

This is the error I get when I enter path when I try http://127.0.0.1:8001/wsdl?wsdl:

enter image description here

Sorry I did not refresh stack overflow and as such did not see your request for the wsdl. Below the wsdl:

<!-- 
Bramron
2018-06-23
let you post/retrieve online documents by SOAP protocol

Online WSDL 1.1 SOAP generator 0.2
Julien Blitte
 
--><definitions name="let you post/retrieve online documents by SOAP 
protocol" 
targetNamespace="bramron.group.company.project.plateform.documentservice.wsdl"><!-- 
definition of datatypes --> <types><schema 
targetNamespace="bramron.group.company.project.plateform.documentservice.xsd"><element 
name="csvDoc"><complexType><all><element name="value" 
type="string"/></all></complexType></element><element 
name="jsonDoc"><complexType><all><element name="value" 
type="string"/></all></complexType></element><element 
name="pdfDoc"><complexType><all><element name="value" 
type="string"/></all></complexType></element><element 
name="returnCode"><complexType><all><element name="value" 
type="int"/></all></complexType></element><element 
name="month"><complexType><all><element name="value" 
type="int"/></all></complexType></element></schema></types><!-- 
response messages --> <message name="returns_returnCode"><part 
name="returnCode" type="xsd:returnCode"/></message><message 
name="returns_csvDoc"><part name="csvDoc" 
type="xsd:csvDoc"/></message><message name="returns_jsonDoc"><part 
name="jsonDoc" type="xsd:jsonDoc"/></message><message 
name="returns_pdfDoc"><part name="pdfDoc" 
type="xsd:pdfDoc"/></message><!-- request messages --> <message 
name="post_csvDoc"><part name="csvDoc" 
type="xsd:csvDoc"/></message><message name="post_jsonDoc"><part 
name="jsonDoc" type="xsd:jsonDoc"/></message><message 
name="post_pdfDoc"><part name="pdfDoc" 
type="xsd:pdfDoc"/></message><message name="get_csvDoc"><part 
name="month" type="xsd:month"/></message><message 
name="get_jsonDoc"><part name="month" 
type="xsd:month"/></message><message name="get_pdfDoc"><part 
name="month" type="xsd:month"/></message><!-- server's services --> 
<portType name="Document"><operation name="post_csvDoc"><input 
message="tns:post_csvDoc"/><output 
message="tns:returns_returnCode"/></operation><operation 
name="post_jsonDoc"><input message="tns:post_jsonDoc"/><output 
message="tns:returns_returnCode"/></operation><operation 
name="post_pdfDoc"><input message="tns:post_pdfDoc"/><output 
message="tns:returns_returnCode"/></operation><operation 
name="get_csvDoc"><input message="tns:get_csvDoc"/><output 
message="tns:returns_csvDoc"/></operation><operation 
name="get_jsonDoc"><input message="tns:get_jsonDoc"/><output 
message="tns:returns_jsonDoc"/></operation><operation 
name="get_pdfDoc"><input message="tns:get_pdfDoc"/><output 
message="tns:returns_pdfDoc"/></operation></portType><!-- server 
encoding --> <binding name="Document_webservices" 
type="tns:Document"><soap:binding style="rpc" 
transport="http://schemas.xmlsoap.org/soap/http"/><operation 
name="post_csvDoc"><soap:operation 
soapAction="urn:xmethods-delayed-quotes#post_csvDoc"/><input><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation><operation 
name="post_jsonDoc"><soap:operation 
soapAction="urn:xmethods-delayed-quotes#post_jsonDoc"/><input><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation><operation 
name="post_pdfDoc"><soap:operation 
soapAction="urn:xmethods-delayed-quotes#post_pdfDoc"/><input><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation><operation 
name="get_csvDoc"><soap:operation 
soapAction="urn:xmethods-delayed-quotes#get_csvDoc"/><input><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation><operation 
name="get_jsonDoc"><soap:operation 
soapAction="urn:xmethods-delayed-quotes#get_jsonDoc"/><input><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation><operation 
name="get_pdfDoc"><soap:operation 
soapAction="urn:xmethods-delayed-quotes#get_pdfDoc"/><input><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></input><output><soap:body 
use="encoded" namespace="urn:xmethods-delayed-quotes" 
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/></output></operation></binding><!-- 
access to service provider --> <service name="production"><port 
name="production_0" binding="Document_webservices"><soap:address 
location="http://127.0.0.1:8000/document_soap/endpoint1"/></port><port 
name="production_1" binding="Document_webservices"><soap:address 
location="http://127.0.0.1:8000/document_soap/endpoint2"/></port></service></definitions>

Summary: for anyone who is interested, the answer to this question is:

  1. Using http://127.0.0.1:8001/wsdl?wsdl as the url instead of just http://127.0.0.1:8001/wsd
  2. adding the namespaces in the definitions tag as per the dropbox wsdl link posted by Terry. Thanks Terry. See "moved to chat" below

Solution

  • Your service URL will be http://your-domain:8000/wsdl. If you're running locally this will be http://localhost:8000/wsdl, since in this case you've set your port number to 8000. In this case you've actually got two servers running as well so you'll have prot 8001 as well!