我已经通过调用GET请求将数据文件的下载添加到应用程序中。
代码看起来工作得很好,但是我对健壮性和/或性能没有信心。任何关于性能/健壮性的建议**都将非常感谢。
- 该文件非常小(小于200 kb)(并且将一直如此)。
- 连接是在wifi下。
- httpserver是一个Express/节点。
- 该应用程序是一个Nativescript 8.3风格的Typescript。
下载路径的代码(直接从Express示例):
const download = (req, res) => {
const fileName = req.params.name;
res.download(dirRoot + fileName, fileName, (err) => {
if (err) {
res.status(500).send({message: "Echec téléchargement de fichier. " + err,});
console.log("!!!!!! download, échec envoi du fichier " + dirRoot + fileName);
}
else
console.log(getCurrentDate() + " Envoi réussi du fichier " + dirRoot + fileName);
});
};
应用程序调用的代码:
- 之前已检查文件是否已存在
- global.selfIP包含设备的IP。
- global.serverIP包含服务器的IP
export async function GetStock():Promise<string> {
let result = "";
if (global.selfIP != "") {
let serverUrl = "http://" + global.serverIP + ":8080/files/stock.csv";
await Http.request({url : serverUrl, method : "GET",}).then(
(response: HttpResponse) => {
try {
if ((response.statusCode >= 200) && (response.statusCode <=304)) {
const resultat = response.content.toString();
const chemin : string = path.join(downloadsPath, 'stock.csv')
const filefevcsv : File = File.fromPath(chemin);
filefevcsv.writeTextSync(resultat, WriteOnError, encoding.UTF_8);
}
else
throw Error("Code réponse du serveur : " + response.statusCode);
}
catch(err) {
result = serverUrl + "\nException traitement requete: " + err.message;
}
},
(e) => {
result = serverUrl + "\nException requete: " + e.message;
}
),
(error) => {
result += serverUrl + "\nErreur requête : " + error;
}
}
else
result += "Connexion wifi non établie";
return result;
}
1条答案
按热度按时间iqih9akk1#
将您的呼叫置于后台任务中。https://docs.nativescript.org/plugins/background-http.html