NEWS
Optimaler Umgang mit Request Fehlern
-
Hallo zusammen,
ich nutze in verschieden Scripten den request Befehl. Jetzt habe ich ab zu mal festgestellt, dass wenn die Gegenstelle nicht antwortet der Adapter abschmiert. Jetzt ist meine Frage wie ich den request Befehl am besten einbau.
Ich habe so im Einsatz:
function displayan() { try { request ('http://xxx.xxx.xxx.xxx); } catch (e) { log(e, 'warn'); }
habe an anderen Stellen schon folgende Alternative gefunden:
request(URL, function (error, response, body) { if (!error && response.statusCode == 200) { xxxyyyzzz } else { log(error); }
Welche Weg ist der bessere? Gibt es weitere Alternativen?
Gruß
Michael
-
Hi,
ich hatte auch das selbe Problem.
Das dumme ist, das es sehr ungünstig ist das wenn ein Fehler (z.B. Unerreichbarkeit) auftritt, bei mir die JS neu startet.
Irgendwie hat das mit dem damaligen Tipp vin "pix" mit try..catch in manchen Situationen nicht funktioniert.
Daraufhin habe ich mit meinen Progammiertechnischen Unwissen nach einer Lösung gesucht, die wie folgt aussieht:
var http = require('http'); http.get("deineurl").on('error', function(e)//oder .post { log(e); });
Wenn jetzt ein Fehler auftritt, startet die Instanz nicht neu.
-
var http = require('http'); http.get("deineurl").on('error', function(e)//oder .post { log(e); });
Wenn jetzt ein Fehler auftritt, startet die Instanz nicht neu. `
Danke für den Tipp!
Bei mir ist das auch noch eine Baustelle.
Dank Deines Hinweis gegooglet und das hier sieht ganz brauchbar aus:
http://stackoverflow.com/questions/9577 … js-express
Von dort aus einer Antwort entnommen:
var http = require('http'); var options = { host: 'www.ecb.europa.eu', path: '/stats/eurofxref/eurofxref-daily.xml' }; function webseiteAbfragen() { var req = http.get(options, function(res) { log('STATUS: ' + res.statusCode); // Statuscode log('HEADERS: ' + JSON.stringify(res.headers)); // Header (Rückmeldung vom Webserver) // Buffer the body entirely for processing as a whole. var bodyChunks = []; res.on('data', function(chunk) { // Hier können die einzelnen Zeilen verarbeitet werden... bodyChunks.push(chunk); }).on('end', function() { var body = Buffer.concat(bodyChunks); log('BODY: ' + body); // ...und/oder das Gesamtergebnis. }); }); req.on('error', function(e) { // Fehler abfangen log('ERROR: ' + e.message,"warn"); }); } webseiteAbfragen();
-
Hi,
Hier ist Recht gut beschrieben warum das mit try…Catch nicht funktioniert.
<url url="http://m.heise.de/developer/artikel/Einfuehrung-in-die-asynchrone-JavaScript-Programmierung-2752531.html">
[http://m.heise.de/developer/artikel/Einfuehrung-in-die-asynchrone-JavaScript-Programmierung-2752531.html" target="_blank">](</s><LINK_TEXT text=)[<link_text text="
http://m.heise.de/developer/artikel/Ei … 52531.html">http://m.heise.de/developer/artikel/Einfuehrung-in-die-asynchrone-JavaScript-Programmierung-2752531.html</link_text>](</s><LINK_TEXT text=)</url>