Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Optimaler Umgang mit Request Fehlern

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Optimaler Umgang mit Request Fehlern

    This topic has been deleted. Only users with topic management privileges can see it.
    • M
      mctom last edited by

      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

      1 Reply Last reply Reply Quote 0
      • blauholsten
        blauholsten Developer last edited by

        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.

        1 Reply Last reply Reply Quote 0
        • ruhr70
          ruhr70 last edited by

          @blauholsten:

          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();
          
          
          1 Reply Last reply Reply Quote 0
          • blauholsten
            blauholsten Developer last edited by

            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>

            1 Reply Last reply Reply Quote 0
            • First post
              Last post

            Support us

            ioBroker
            Community Adapters
            Donate

            1.1k
            Online

            31.7k
            Users

            79.7k
            Topics

            1.3m
            Posts

            3
            4
            1346
            Loading More Posts
            • Oldest to Newest
            • Newest to Oldest
            • Most Votes
            Reply
            • Reply as topic
            Log in to reply
            Community
            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
            The ioBroker Community 2014-2023
            logo