我需要找到一种方法来获得响应作为https post请求的结果。到目前为止,我发现它只在回调函数中提供,它不包括将数据写入请求后的结果,并以如下所示结束:
**注意:下面的代码将被包装在"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();
request.end()"代码我需要能够获得从请求返回的状态码,以确定实际请求是否成功。我想这样做:
if (response.statusCode !== 200) {
res.sendFile(__dirname + "/failure.html");
}
else {
res.sendFile(__dirname + "/success.html");
}
if语句应该在request.end()之后运行,以确定实际请求是否成功。这是使用Flask-Python等API框架的标准,但我似乎找不到在express.js中捕获此问题的方法。如有任何帮助,不胜感激。
https.request
异步工作。请求是否成功不能在request.end()
之后同步确定,而只能在回调函数(您可以评估response.statusCode
)或error
事件(如果请求根本无法发出,例如,因为服务器不可达)中确定。
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();