var https = require(\'https\');
var p = \'/api/username/FA/AA?ZOHO_ACTION=EXPORT&ZOHO_OUTPUT_FORMAT=JSON&ZOHO_ERROR_FORMAT=JSON&ZOHO_API_KEY=dummy1234&
It turns out that the solution to the given problem, when you do want to make a POST request, is apparently to set the "headers" field of the options object to contain a 'Content-Length' field.
See code here:
How to make an HTTP POST request in node.js?
i think you're missing two things. Assuming p is both your endpoint and your url-encoded payload.
You could split your p variable into the both api path, and the post_data payload you need to write before ending the request.
var p = 'ZOHO_ACTION=EXPORT&ZOHO_OUTPUT_FORMAT=JSON&ZOHO_ERROR_FORMAT=JSON&ZOHO_API_KEY=dummy1234&ticket=dummy9876&ZOHO_API_VERSION=1.0';
var https = require('https');
var options = {
host: 'reportsapi.zoho.com',
port: 443,
path: '/api/username/FA/AA',
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(p)
}
}
var req = https.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);
res.on('data', function(d) {
process.stdout.write(d);
});
});
req.write(p);
req.end();
Hope it helps!!
I am able to solve this problem by changing the method from POST to GET
Thanks koti
var server = http.createServer();
server.on('request', function(req, res) {
req.on('data',function(data){
res.writeHead(200, {'Content-Type': 'text/plain','Content-Length':data.toString().length+''});
res.write(data.toString());
res.end();
});
});