由于 https 發布請求,我需要找到一種方法來獲得回應。到目前為止我發現只有在回呼函式中提供,它不包括資料寫入請求并結束后的結果,如下圖所示:
**注意:下面的代碼將被包裝在“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 中找到一種方法來捕捉它。任何幫助,將不勝感激。
uj5u.com熱心網友回復:
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();
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/475472.html
下一篇:如何發布請求?