Necesito encontrar una manera de obtener una respuesta como resultado de una solicitud de publicación https. Lejos de lo que encontré, solo se proporciona en la función de devolución de llamada, que no incluye el resultado después de que los datos se escriben en la solicitud y finalizan como se muestra a continuación:
**Nota: el siguiente código estaría envuelto dentro de un método "app.post".
const https = require("https"); var url = "https://someurl.com"; var options = {option1: "some option"} var jsonData = {data1: "some data"}; const request = https.request(url, options, function (repsonse) { // HERE THE STATUS CODE ONLY CAPTURES IF THE RESOURCE WAS AVAILABLE // NOT IF THE REQUEST WAS SUCCESSFUL console.log(response.statusCode); }); request.write(jsonData); request.end();Después del código "request.end ()", necesito poder obtener el código de estado devuelto por la solicitud para determinar si la solicitud real fue exitosa. Me gustaría hacer algo como esto:
if (response.statusCode !== 200) { res.sendFile(__dirname + "/failure.html"); } else { res.sendFile(__dirname + "/success.html"); }La declaración if debe ejecutarse después de request.end() para determinar si la solicitud real fue exitosa. Esto es estándar para usar marcos API como Flask-Python, pero parece que no puedo encontrar una manera de detectar esto en express.js. Cualquier ayuda sería apreciada.
https.request funciona de forma asíncrona . Si la solicitud es exitosa o no, no se puede determinar sincrónicamente después de request.end() , sino solo en la función de devolución de llamada (donde puede evaluar response.statusCode ) o en el evento de error (si la solicitud no se pudo realizar en absoluto, por ejemplo, porque no se pudo acceder al servidor).
const request = https.request(url, options, function (response) { console.log(response.statusCode); if (response.statusCode !== 200) res.sendFile(__dirname + "/failure.html"); else res.sendFile(__dirname + "/success.html"); }); request.on("error", function(err) { console.error(err); res.sendFile(__dirname + "/failure.html"); }); request.write(jsonData); request.end();