Я пытаюсь отправить https-запрос с помощью модуля nodeJS https, выполнив следующий код:
cors(req, res, () => {
let data = {
"password": "passwordhere",
"receipt-data": req.body.receiptData
};
let headers = { 'Content-Type': 'application/json' };
let options = {
hostname: 'sandbox.itunes.apple.com',
method: 'POST',
path: '/verifyReceipt',
headers: headers,
port: 443
}
let httpsRequest = https.request(options,function(res){
console.info('STATUS: ' + res.statusCode);
console.info('HEADERS: ' + JSON.stringify(res.headers));
res.on('data',function(chuck){
responseDate+=chuck;
});
}) ;
let responseDate = '';
httpsRequest.on('error',function(e){
console.info("inside the error");
console.info(e);
});
httpsRequest.on('end',function(){
console.info("inside the end");
JSON.parse(responseDate)
res.send({res:JSON.parse(responseDate)});
});
httpsRequest.write(JSON.stringify(data));
httpsRequest.end();
});
});
Результат:
Итак, время запроса произошло, а ошибка / конец httpsRequest.on не выполняются!
Кто-нибудь может объяснить мне, в чем моя вина?
Спасибо.





Вы хотите использовать res.on('end', ...), а не httpsRequest.on('end', ...). См. Пример в документ.
let httpsRequest = https.request(options,function(res){
let responseDate = '';
console.info('STATUS: ' + res.statusCode);
console.info('HEADERS: ' + JSON.stringify(res.headers));
res.on('data',function(chuck){
responseDate+=chuck;
});
res.on('end', function() {
console.info("inside the end");
// may have to url decode data here before you have the JSON that was sent
res.send({res:responseDate});
});
});
httpsRequest.on('error', function(e) {
res.status(500).send("error occurred")
});
// write data to request body
httpsRequest.write(postData);
httpsRequest.end();
Но, что еще лучше, я бы посоветовал вам просто использовать модули request или request-promise, которые делают всю эту работу за вас.
const rp = require('request-promise');
rp(options).then(function(data) {
res.json(data);
}).catch(err => {
// handle error here
console.info(err);
res.status(500).send("error occurred")
});
Если это настоящий пароль, вам, вероятно, следует его удалить.