how to post XML data in node.js http.request
Actually the link given by Andrey Sidorov helped to get it working.This works.
var body = '<?xml version="1.0" encoding="utf-8"?>' + '<soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">'+ '<soap12:Body>......</soap12:Body></soap12:Envelope>';var postRequest = { host: "service.x.yyy.xa.asmx", path: "/a.asmx", port: 80, method: "POST", headers: { 'Cookie': "cookie", 'Content-Type': 'text/xml', 'Content-Length': Buffer.byteLength(body) }};var buffer = "";var req = http.request( postRequest, function( res ) { console.log( res.statusCode ); var buffer = ""; res.on( "data", function( data ) { buffer = buffer + data; } ); res.on( "end", function( data ) { console.log( buffer ); } );});req.on('error', function(e) { console.log('problem with request: ' + e.message);});req.write( body );req.end();
http.request
returns ClientRequest object which is also a writable stream.Instead of .end()
do end(xmlbody)
or .write(xmlbody).end()
var request = require("request");request.post({ rejectUnauthorized: false, url: 'URL', method: "POST", headers: { 'Content-Type': 'application/xml', }, body: '<XML>'}, function (error, response, body) { if (error) { // Handle error } else { // Handle Response and body }});