[node-soap] How do I get http status code in node-soap

549 views
Skip to first unread message

Ritesh Gupta

unread,
May 20, 2018, 10:28:05 AM5/20/18
to nodejs
Hi,

I have a soap client, which makes a web service call with Basic Authentication. The web service that I am calling has implemented "basic-auth" to authenticate the user. Something like below:


       
app.use(basicAuth({  
          users: {
                       'test': 'test123'
              }

        }));


With this implementation, client (soap client) receives http status code (as 401) and soap body is empty and my implementation states this as success. 

On client, how do I retrieve this status code to figure out the state of the response? i tried looking at last "lastResponseHeaders" of soapClient but this data is not there. My code looks like this:

soap.createClient(url, (err, client) => {
if (err) {
logger.error('Error : %s', err);
return;
}

          client.setSecurity(new soap.BasicAuthSecurity(username, password));
               client.doJob(args, function(err, result, rawResponse, soapHeader, rawRequest) {

        if (err) {
                  logger.error('Error %s', err.message);
   
        } else {
                             logger.info('success');
         }, { 
             timeout: heartbeatTimeout
                        }
       });
});

Thanks,
Ritesh



Ritesh Gupta

unread,
May 20, 2018, 11:44:42 PM5/20/18
to nodejs
Code looks like this:



    soap.createClient(url, (err, client) => {
if (err) {
logger.error('Error : %s', err);
return;
}

        client.setSecurity(new soap.BasicAuthSecurity(username, password));
        client.doJob(args, function(err, result, rawResponse, soapHeader, rawRequest) {
    if (err) {
        logger.error('Error %s', err.message);
   
    } else {
    // Since SOAP Client returns 401 as success, I need to find the http status
    // and act accordingly. 
            logger.info('success');
    },
}, { 
    timeout: timeout
        });
    });



Mikkel Wilson

unread,
May 22, 2018, 7:23:26 PM5/22/18
to nodejs
 
Since SOAP Client returns 401 as success

This sounds extremely unusual. 401 is an HTTP code for a request that failed authentication. I suspect you don't have the right credentials or the library isn't sending them in the way the server expects. A 401 status code could include a body, but it may not be SOAP formatted. Your call here seems to return both a 'result' and 'rawResponse', have you looked at those? I'd try logging them to a console and see what you get.

HTH,
Mikkel

Ritesh Gupta

unread,
May 30, 2018, 9:45:13 AM5/30/18
to nod...@googlegroups.com
Sorry for the late response. When I print rawResponse and result, both are empty:

2018-05-30T08:57:07.355Z - trace: [lib/client.js] Beating...
rawResponse: 
result: {}
2018-05-30T08:57:07.380Z - info: [lib/client.js] heartbeat status succesful, breaking....
2018-05-30T08:57:07.380Z - info: [lib/client.js] Heartbeat request completed. Return [true]

in node-soap client.js file, if I add another variable called reponseCode and assign response.statusCode at line 320, i see that status code in my js file

In above log, there is nothing is err and hence the call went into the success criteria. 

Regards,
Ritesh


--
Job board: http://jobs.nodejs.org/
New group rules: https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
---
You received this message because you are subscribed to the Google Groups "nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to nodejs+un...@googlegroups.com.
To post to this group, send email to nod...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/nodejs/7d947be2-2374-4ee6-b8c3-6b42e0a31b41%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply all
Reply to author
Forward
0 new messages