2012-12-24 2 views
14

sto provando a inviare una richiesta xml a un servizio web tramite Node.js utilizzando http.request.come inviare dati XML in node.js http.request

Ecco il mio codice. Il mio problema è che invece di data=1 voglio postare xml al servizio.

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

Ho per fare questo?

risposta

4

http.request restituisce l'oggetto ClientRequest che è anche un flusso scrivibile. Invece di fare .end()end(xmlbody) o .write(xmlbody).end()

20

In realtà il collegamento data dal Andrey Sidorov contribuito a farlo funzionare. Questo funziona.

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

lo faccio ma mostra "Usa il metodo POST per inviare il parametro 'xml'". quello che faccio – vinodh