如何在node.js http.request中发布XML数据

我想通过使用http.request Node.js提交一个XML请求到一个Web服务。

这是我的代码。 我的问题是,而不是data=1我想发布到服务的XML。

 http.request({ host: 'service.x.yyy.x', port: 80, path: "/a.asmx?data=1", method: 'POST' }, function(resp) { console.log(resp.statusCode); if(resp.statusCode) { resp.on('data', function (chunk) { console.log(chunk); str += chunk; }); resp.on('end', function (chunk) { console.log(str); }); } }).end(); 

何要这样做?

http.request返回也是可写stream的ClientRequest对象。 而不是.end()end(xmlbody).write(xmlbody).end()

事实上, 安德烈·西多罗夫 ( Andrey Sidorov)提供的链接帮助了它的工作。 这工作。

 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();