Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Maty Ramirez
    @matigastirami_gitlab
    I've fought a lot trying to mount the request correctly but when y finally did it, the services continues returning error 400
    that's my code:
    let client = await soap.createClientAsync(this.environmentUrl, {
                    ignoreBaseNameSpaces: true,
                    overrideRootElement: {
                        namespace: 'fac:',
                        xmlnsAttributes: [{
                            name: 'xmlns:fac',
                            value: "http://www.facturante.com.API"
                        },{
                            name: 'xmlns:fac1',
                            value: "http://schemas.datacontract.org/2004/07/FacturanteMVC.API"
                        }, {
                            name: 'xmlns:fac2',
                            value: "http://schemas.datacontract.org/2004/07/FacturanteMVC.API.DTOs"
                        }]
                    },
                    /*ignoredNamespaces: {
                        namespaces: ['targetNamespace', 'typedNamespace', 'tns', 'wsu', 'msc', 'i0'],
                        override: true
                    }*/
                });
    
                client.addHttpHeader('Content-Type', 'application/soap+xml; charset=utf-8');
                client.addHttpHeader('Connection', 'Keep-Alive');
    
                let resp = await client.CrearComprobanteAsync({
                    //'fac:CrearComprobante': {
                        'fac:request': {
                            'fac1:Autenticacion': this.parseSecondLevelObj(data.Autenticacion),
                            'fac1:Cliente': this.parseSecondLevelObj(data.Cliente),
                            'fac1:Encabezado': this.parseSecondLevelObj(data.Encabezado),
                            'fac1:Items': [ ...data.Items.map((item, i) => { 
                                return { 'fac2:ComprobanteItem': this.parseSecondLevelObj(item) }
                            }) ]
                        }
                    //}
                    /*...data, 
                    Items: data.Items.map((item, i) => { 
                        return { ComprobanteItem: {...item} }
                    })*/
                });
    If I copy the generated XML and put it into soap UI, it works well

    I tried to delete the next line too:

    client.addHttpHeader('Content-Type', 'application/soap+xml; charset=utf-8');

    But the service returns error 415

    Alexandre Tiertant
    @atiertant
    hi ! i just install with 'npm install soap' and just execute 'var soap = require('soap');' throw an error: TypeError [ERR_INVALID_ARG_TYPE]: The "original" argument must be of type function
    is the last version of npm buggy ?
    damix96
    @damix96
    Hi!
    How can i feed an wsdl string to soap client without saving it on filesystem?
    Luis Morales
    @luismoralescondor
    Hi people, nice to meet you
    I have a simple question, ¿How can we change default verb used by the request?
    My request is using POST, but i need yo use PUT
    Jon
    @jrista
    Anyone using the latest npm soap lib run into issues with tons of extra xmlns being generated and used in the document?
    This message was deleted
    Lea Reimann
    @lkreimann
    Hello everyone, is possible to remove or exchange the package httpntlm from the dependencies? We're getting security warnings bc of httpntlms dependency underscore and unfortunately httpntlm wasn't updated the last 3 years so I don't think they're going to update their package any time soon. Any thoughts on this? Sorry if this has been posted already!
    Kelly Hilliard
    @skhilliard
    Just wanted to add my request along with @lkreimann . Updating/replacing the httpntlm dependency would be greatly appreciated to get rid of this vulnerability that was just reported for underscore (https://npmjs.com/advisories/1674)
    Stephane
    @stondini

    @vpulim
    Hi Vinay,
    First, thank you for the great job you did with this library. I forked your code to add a test involving a very complex WSDL (WSDLs import, XSD with different namespace, complex types inheritence, etc.) :
    stondini/node-soap@533ff7c

    I'm not a JavaScript developer so it's hard to figure out the issue but the request seems not to be generated with the correct namespaces.
    The request XML is not generated as expect.
    Did you already face this kind of issue ?

    8 replies
    Jacob Page
    @DullReferenceException
    I believe that the version bump for the httpntlm package was recently merged: SamDecrock/node-http-ntlm#93
    1 reply
    Cliff Mayson
    @CliffMayson_twitter

    Hi Guys, can't seem to get the unit tests running on the project on master with no changes, eg after npm i, then npm run test I get the folllow error:

    should allow customization of httpClient and the wsdl file download should pass through it: Uncaught AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value: ,

    currently running node 16.1.0

    1 reply
    Jan Kowalski
    @johnykov
    hello, fellow, first of all I love node-soap! Amazing lib, helps a lot. But I still don't know and can't find an example of how to consume response with attachment that is of content-type type="application/xop+xml"
    and ideas?
    Jan Kowalski
    @johnykov
    ok I see one proposition of solution in PR
    Mukhammad Pardaboev
    @linc96pm

    Hi James, @allout58 did you solved this issue? cause I am facing the same problem right now. Any one can help please!

    Hi, I've got a problem creating the client. I've been able to get it working with another WSDL, but on pointing it to the new WSDL, it crashes with the following stacktrace

    TypeError: Cannot read property 'postProcess' of undefined
    at subElement.OperationElement.postProcess (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:651:12)
    at subElement.PortTypeElement.postProcess (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:671:11)
    at subElement.BindingElement.postProcess (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:685:14)
    at subElement.ServiceElement.postProcess (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:721:17)
    at C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:1038:26
    at WSDL._processNextInclude (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:1158:12)
    at WSDL.processIncludes (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:1201:8)
    at C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:1028:10
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickCallback (internal/process/next_tick.js:104:9)
    at new WSDL (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:1021:11)
    at C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:2246:16
    at Request._callback (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\http.js:117:5)
    at Request.self.callback (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\request\request.js:188:22)
    at emitTwo (events.js:106:13)
    at Request.emit (events.js:191:7)
    at Request.<anonymous> (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\request\request.js:1171:10)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at IncomingMessage.<anonymous> (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\request\request.js:1091:12)
    at emitNone (events.js:91:20)
    at Request.init (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\request\request.js:191:10)
    at new Request (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\request\request.js:130:8)
    at HttpClient.request [as _request] (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\request\index.js:54:10)
    at HttpClient.request (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\http.js:112:18)
    at open_wsdl (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\wsdl.js:2242:16)
    at C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\soap.js:21:7
    at _requestWSDL (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\soap.js:47:5)
    at createClient (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\soap.js:58:3)
    at C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\soap\lib\soap.js:68:5
    at Promise._execute (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\bluebird\js\release\debuggability.js:303:9)
    at Promise._resolveFromExecutor (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\bluebird\js\release\promise.js:483:18)
    at new Promise (C:\Users\jhollowell\WebProjects\swampticket2-backend\node_modules\bluebird\js\release\promise.js:79:10)`

    Here is my error stack trace TypeError: Cannot read property 'postProcess' of undefined
    at OperationElement.postProcess (D:\MY_PROJECTS\NODE-SOAP\node-soap-ts\node_modules\soap\src\wsdl\elements.ts:874:15)
    at PortTypeElement.postProcess (D:\MY_PROJECTS\NODE-SOAP\node-soap-ts\node_modules\soap\src\wsdl\elements.ts:914:13)
    at BindingElement.postProcess (D:\MY_PROJECTS\NODE-SOAP\node-soap-ts\node_modules\soap\src\wsdl\elements.ts:968:16)
    at ServiceElement.postProcess (D:\MY_PROJECTS\NODE-SOAP\node-soap-ts\node_modules\soap\src\wsdl\elements.ts:1042:19)
    at D:\MY_PROJECTS\NODE-SOAP\node-soap-ts\node_modules\soap\src\wsdl\index.ts:112:30
    at WSDL._processNextInclude (D:\MY_PROJECTS\NODE-SOAP\node-soap-ts\node_modules\soap\src\wsdl\index.ts:1186:14)
    at WSDL.processIncludes (D:\MY_PROJECTS\NODE-SOAP\node-soap-ts\node_modules\soap\src\wsdl\index.ts:173:10)
    at D:\MY_PROJECTS\NODE-SOAP\node-soap-ts\node_modules\soap\src\wsdl\index.ts:101:12
    at processTicksAndRejections (internal/process/task_queues.js:75:11)
    1 reply
    Lukas
    @lkiii
    Hello, maybe someone could assist me with the XML generation? I am trying to call the soap service and my root XML element inside the envelope body has the attribute "version" and two complex types "header" and "body". If I am adding the data using const message = { Header: { ... }, Details: { .... }, attributes: { version: 3.1 }, } my version attribute is added to the XML without the namespace. What am I doing wrong?
    4 replies
    RoisinLocke
    @RoisinLocke

    Hi all - noob question here... trying to access a public url ('http://dataaccess.com/webservicesserver/NumberConversion.wso') and I've got the following code:

    const options = {
          wsdl_options: {
            forever: true,
            rejectUnauthorized: false,
            strictSSL: false,
          },
          wsdl_headers: {
            'Content-Type': 'application/json; charset=utf-8',
            'Content-Length': 'length'
          },
        }
      let argument = {'ubiNum': '20'}
    
        soap.createClientAsync(url, options)
        .then((client) => {
          return client.NumberToWords(argument)
        })
        .then((resp) => {
          console.log('hello again', resp)
        })
        .catch((err) => {
          console.log('message', err.message)
          return err
        })

    But I'm getting a 400 error stating Invalid WSDL URL: http://dataaccess.com/webservicesserver/NumberConversion.wso
    I was previously getting a 401 error with the same message until I added the quotes to the argument object.

    Any advice would be greatly appreciated, I'm pretty stuck :(

    8 replies
    davefej
    @davefej
    Hi there!
    Is it possible to read response attachment (MTOM and/or SWA) with this lib?
    If not are there any workaround to solve this?
    Sean Winner
    @swinner2

    Hello all. Brand new to SOAP and a little confused. I'm calling this function on my soap client CreateSecureSession it should be a POST request. For some reason I think this code is making a GET request based on result.request.method === "GET". Is there something I'm missing? Can I force it to run a POST request? The body is html but I expect this function to return a secure session token.

    Here is my code

        soap.createClient(url, opts, function (err, client) {
          console.log("connected")
          client.CreateSecureSession(args, function (err, result, rawResponse, soapHeader, rawRequest) {
            console.log(JSON.stringify(result, null, 2))
            response = result
          })
        })
    4 replies
    Martin Lokaj
    @martin.lokaj_gitlab

    Hi guys,
    please any suggestion how to set client so I can get ID attribute and namespace in Body tag

    <soap:Body wsu:Id="id-623" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">

    could not find anything in docs

    FredCni
    @FredCni

    hi ! i just install with 'npm install soap' and just execute 'var soap = require('soap');' throw an error: TypeError [ERR_INVALID_ARG_TYPE]: The "original" argument must be of type function

    I had the same issue.
    It was only a matter of running with a recent node version. Version 9 won't do. But v14 would.

    Aidan Marshall
    @aidanm1999

    Hi guys,
    New to the library, I have created a client with the appropriate URL and args, however, the options I have added are not getting implemented. The server I am trying to call does not work well with soap1.1 and so has to be done with 1.2. Therefore I have added the forceSoap12Headers tag to true, however looking at the client.last request, the soap XML isn't converted.

    Code:

    const options: IOptions = {
        forceSoap12Headers: true,
    };
    
    client.FnName(req, options, function (err, result) {
        console.log(client.lastRequest);
    });

    Generated XML:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:tns="[...]" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/">
      <soap:Body>
        [well made XML]
      </soap:Body>
    </soap:Envelope>

    Any help would be much appreciated!

    Mukhammad Pardaboev
    @linc96pm
    Hello everyone! How can I remove XML attributes from the response? I am getting response like this
    "ResponseInfo": {
                "attributes": {
                    "id": "id0",
                    "soapenc:root": "0",
                    "soapenv:encodingStyle": "http://schemas.xmlsoap.org/soap/encoding/",
                    "xsi:type": "ns3:OperationResponseInfo"
                },
                "response_code": {
                    "attributes": {
                        "xsi:type": "xsd:integer"
                    },
                    "value": 0
                },
                "EXTERNAL_SESSION_ID": {
                    "attributes": {
                        "xsi:type": "xsd:string"
                    },
                    "value": "1212dd0sk"
                }
            },
    yesvike
    @yesvike
    I am using version 0.39.0. I am able to consume the soap service using node-soap. Transaction performance is very slow compared to other technologies. For example, the same soap request gets the response in SpringBoot or soap ui in less than 10 seconds whereas node-soap takes 25 seconds. Do I need to set up any options for increasing the performance ?
    1 reply
    Joseph Betts
    @JBetts97

    Hello Everybody,
    How can I make client.Function calls sequentially after receiving response from previous function.

    For example:

    client.orderlist(args, function(err, response){
    console.log(response.ordernumber);
    
    response.forEach(function(arrayResponse){
    client.orderinfo(args, function(err, response){
    console.log(arrayResponse.emailaddress);
    }
    }
    }
    Actual output:
    - ordernumber
    - ordernumber
    - emailaddress
    - emailaddress
    
    Expected output:
    - ordernumber
    - emailaddress
    - ordernumber
    - emailaddress
    qcom-eug
    @qcom-eug
    I am using 0.37.0 but I am getting an array as a response. The first and third element was null but I am getting a response in the second and forth element in XML. Anyone has idea why?
    Moacir Carlos Kurmann
    @MoacirCarlos
    image.png
    Hello, when creating a query from a WSDL I'm having parser error in the xml, this only happens in docker environment, is there any option or volume configuration that I need to create?
    Tristan Storch
    @tstorch

    Hi. I'm new to node-soap. I have the following issue: A SOAP service is sending me back an XML response with escaped zero bytes (&x0;). Somehow node-soap seems to have problems with that it returns with an Error:
    Fault: {
    faultcode: 500,
    faultstring: 'Invalid XML',
    detail: 'Error: Invalid character entity\nLine: 0\nColumn: 19136\nChar: ;',
    statusCode: 500
    },

    Is there a reason why the zero byte is not decoded, but things like CR (\r) or LF (\n) are?

    Tristan Storch
    @tstorch
    Ok. I found the problem:
    isaacs/sax-js#150
    Is there any chance, that this will be fixed somehow in node-soap?
    argonauta2018
    @argonauta2018

    Any way to merge security WSSecurityCert and WSSecurity i want to authenticate with usernametoken and signature but setSecurity allows me only one

    Thanks...

    euberdeveloper
    @euberdeveloper
    Hi, I usually use REST APIs but this time I have to face SOAP for a third party service. I am new to SOAP, is it normal that I receive a 200 OK Http Status even if the body tells me that there was an error? Is this because SOAP is a protocol that wraps HTTP?
    If yes, does your package automatically handle these situations?
    Steve Lambe
    @firrae
    Is it not possible to use import soap from 'soap';? When I try to use it that way it comes back undefined, but require seems fine.
    Néstor Hernández Ojeda
    @nesheroj

    Is it not possible to use import soap from 'soap';? When I try to use it that way it comes back undefined, but require seems fine.

    I think the package might not have a default export, in that case you would need to import specifically what you want like: import { BearerSecurity, Client, createClient } from 'soap';

    image.png
    Does anybody know any reason why the events wouldn't trigger? I'm registering handlers for logging purposes and making some calls that are getting successful responses, but events seem to not be triggering.
    Antoine Poliakov
    @antoinep92

    Hi everyone, I'm using soap client. It generates request xml like this:

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope
        xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:tns="http://myapi.com/webservice"
        xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/">
        <soap:Body>
            <MethodName xmlns="http://myapi.com/webservice">
            .......
            </MethodName>
        </soap:Body>
    </soap:Envelope>

    The xmlns attribute in the MethodName tag apparently breaks the request (at least on the webservice I'm using). Is there a way to remove the attribute through some options , and juste have <MethodName> instead of <MethodName xmlns="..."> ?

    1 reply
    Steve Lambe
    @firrae

    Is it not possible to use import soap from 'soap';? When I try to use it that way it comes back undefined, but require seems fine.

    I think the package might not have a default export, in that case you would need to import specifically what you want like: import { BearerSecurity, Client, createClient } from 'soap';

    Ah, thanks

    wellá
    @lostdesign

    Hi everyone, i am trying to make a soap call

    const gradeDeleteResult = await gradeClient.deleteGradeAsync({
          deleteGradeRequest: {
            id: Number(gradeId),
            profileBookingId: Number(bookingId)
          }
        })

    But it seems like that the JSON is creating the xml falsy.

    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tnsSimoGrade="http://XXXXXXXXXX.de/grade/" xmlns:tnsSimoBase="http://XXXXXXXX.de/base/" xmlns:xsdSimoGrade="http://XXXXXX.de/grade/schema" xmlns:xsdSimo="http://XXXXXXXX.de/core/schema">
      <soap:Body>
        <tnsSimoBase:deleteGrade>
          <deleteGradeRequest>
            <id>11764173</id>
            <profileBookingId>10634046</profileBookingId>
          </deleteGradeRequest>
        </tnsSimoBase:deleteGrade>
      </soap:Body>
    </soap:Envelope>

    the expected xml should be

    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:grad="http://XXXXXX.de/grade/">
      <soapenv:Header />
      <soapenv:Body>
        <grad:deleteGrade>
          <deleteGradeRequest id="11764173" profileBookingId="10634046" />
        </grad:deleteGrade>
      </soapenv:Body>
    </soapenv:Envelope>

    I have tried passing the XML as per https://github.com/vpulim/node-soap#example-with-xml-string-for-the-args

    const gradeDeleteResult = await gradeClient.deleteGradeAsync({
          _xml: `
        <grad:deleteGrade>
          <deleteGradeRequest id="${gradeId}" profileBookingId="${bookingId}" />
        </grad:deleteGrade>
        `
        })

    but that leaves me with a encoded xml payload

    <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:tnsSimoGrade="http://XXXXXXX/grade/" xmlns:tnsSimoBase="http://XXXXXXX/base/" xmlns:xsdSimoGrade="http://XXXXXXXXXX/grade/schema" xmlns:xsdSimo="http://XXXXXXXXX/core/schema"><soap:Body><tnsSimoBase:deleteGrade><xml>
        &lt;grad:deleteGrade&gt;
          &lt;deleteGradeRequest id=&quot;11764174&quot; profileBookingId=&quot;10634046&quot; /&gt;
        &lt;/grad:deleteGrade&gt;
        </xml></tnsSimoBase:deleteGrade></soap:Body></soap:Envelope>

    I'd appreciate any hints or help! Many thanks in advance

    2 replies
    merrittc
    @merrittc
    I'm trying to create a client for an older WCF service. Are there any tips others can provide to assist in setting this up? The service I'm using has a Ping operation and when It ry to create the client to call it, I get soap envelope like this...
    <?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract"
        xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"
        xmlns:tns="http://www.CooperativeTechnologies.com/CT1035YellowPagesWS/v20800"
        xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702"
        xmlns:q1="http://www.CooperativeTechnologies.com/Schemas/CT1035YellowPagesWS/v20800"
        <!-- and 106 others... xmlns:q2, q3, q4, etc. -->
        xmlns:q108="http://www.CooperativeTechnologies.com/Schemas/CT1035YellowPagesWS/v20800">
        <soap:Header></soap:Header>
        <soap:Body></soap:Body>
    </soap:Envelope>
    1 reply
    Bernhard Posselt
    @BernhardPosselt
    hi I'm looking for documentation
    I want to create a soap client but the README doesn't contain an example of how this thing actually works
    kinda hard to figure out what args actually is if no TS types are generated
    ericpan17
    @ericpan17
    Anybody have any ideas why I am getting the following errors(from the soap server)
    2 replies