Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Alternative für "request" Paket?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.3k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.3k

Alternative für "request" Paket?

Geplant Angeheftet Gesperrt Verschoben Entwicklung
developerdevelopmentadapter entwicklungnodejsnpm
26 Beiträge 7 Kommentatoren 3.8k Aufrufe 7 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • liv-in-skyL liv-in-sky

    das gilt auch für scripts ? müssen/sollten die alle auf axios umgestellt werden ?

    arteckA Offline
    arteckA Offline
    arteck
    Developer Most Active
    schrieb am zuletzt editiert von
    #6

    @liv-in-sky solltest du ...jep

    zigbee hab ich, zwave auch, nuc's genauso und HA auch

    1 Antwort Letzte Antwort
    2
    • AlCalzoneA AlCalzone

      Ich habe vor einiger Zeit auf axios umgestellt, da es schlanker ist und von Haus aus mit Promises umgehen kann.

      @haus-automatisierung sagte in Alternative für "request" Paket?:

      devDependency

      Dran denken, es bei Nutzung zu dependencies zu verschieben. Das fällt bei lokalen Tests oft nicht auf.

      haus-automatisierungH Online
      haus-automatisierungH Online
      haus-automatisierung
      Developer Most Active
      schrieb am zuletzt editiert von
      #7

      @AlCalzone sagte in Alternative für "request" Paket?:

      Dran denken, es bei Nutzung zu dependencies zu verschieben. Das fällt bei lokalen Tests oft nicht auf.

      Logisch :) Danke, dann stelle ich mal auf axios um...

      🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
      🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
      📚 Meine inoffizielle ioBroker Dokumentation

      AlCalzoneA 1 Antwort Letzte Antwort
      0
      • haus-automatisierungH haus-automatisierung

        @AlCalzone sagte in Alternative für "request" Paket?:

        Dran denken, es bei Nutzung zu dependencies zu verschieben. Das fällt bei lokalen Tests oft nicht auf.

        Logisch :) Danke, dann stelle ich mal auf axios um...

        AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #8

        @haus-automatisierung sagte in Alternative für "request" Paket?:

        Logisch

        Du glaubst nicht wie oft mir das schon passiert ist ;)

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        M 1 Antwort Letzte Antwort
        1
        • AlCalzoneA AlCalzone

          @haus-automatisierung sagte in Alternative für "request" Paket?:

          Logisch

          Du glaubst nicht wie oft mir das schon passiert ist ;)

          M Offline
          M Offline
          MartyBr
          schrieb am zuletzt editiert von
          #9

          @AlCalzone Hallo, ich suche gerade eine Anleitung, wie man das Modul "request" gegen "axios" tauscht. Ich habe einige Scripte, die ich aktualisieren möchte.
          Leider finde ich sowohl in Google als auch hier im Forum keine Anleitung.
          Kannst du mir kurz auf die Spur bringen?

          Gruß
          Martin


          Intel NUCs mit Proxmox / Iobroker als VM unter Debian
          Raspeberry mit USB Leseköpfen für Smartmeter
          Homematic und Homematic IP

          AlCalzoneA haus-automatisierungH 2 Antworten Letzte Antwort
          0
          • M MartyBr

            @AlCalzone Hallo, ich suche gerade eine Anleitung, wie man das Modul "request" gegen "axios" tauscht. Ich habe einige Scripte, die ich aktualisieren möchte.
            Leider finde ich sowohl in Google als auch hier im Forum keine Anleitung.
            Kannst du mir kurz auf die Spur bringen?

            AlCalzoneA Offline
            AlCalzoneA Offline
            AlCalzone
            Developer
            schrieb am zuletzt editiert von
            #10

            @MartyBr Das hängt schwer davon ab, wie du request nutzt. Ich würde beide Pakete auf Github vergleichen:
            https://github.com/request/request#super-simple-to-use
            https://github.com/axios/axios#note-commonjs-usage

            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

            M 1 Antwort Letzte Antwort
            0
            • AlCalzoneA AlCalzone

              @MartyBr Das hängt schwer davon ab, wie du request nutzt. Ich würde beide Pakete auf Github vergleichen:
              https://github.com/request/request#super-simple-to-use
              https://github.com/axios/axios#note-commonjs-usage

              M Offline
              M Offline
              MartyBr
              schrieb am zuletzt editiert von MartyBr
              #11

              @AlCalzone Danke für die Antwort. Die Weiterentwicklung von "Request" scheint eingestellt zu sein. Oder hast du andere Infos dazu? Ich bekomme im Log Warnungen. Ich versuche mal ein Script auf axios umzustellen.

              #Edit:
              Ich habe gerade das Paket "node-fetch" gefunden. Hat jemand Erfahrung damit gemacht?

              Gruß
              Martin


              Intel NUCs mit Proxmox / Iobroker als VM unter Debian
              Raspeberry mit USB Leseköpfen für Smartmeter
              Homematic und Homematic IP

              AlCalzoneA 1 Antwort Letzte Antwort
              0
              • M MartyBr

                @AlCalzone Danke für die Antwort. Die Weiterentwicklung von "Request" scheint eingestellt zu sein. Oder hast du andere Infos dazu? Ich bekomme im Log Warnungen. Ich versuche mal ein Script auf axios umzustellen.

                #Edit:
                Ich habe gerade das Paket "node-fetch" gefunden. Hat jemand Erfahrung damit gemacht?

                AlCalzoneA Offline
                AlCalzoneA Offline
                AlCalzone
                Developer
                schrieb am zuletzt editiert von
                #12

                @MartyBr sagte in Alternative für "request" Paket?:

                Ich bekomme im Log Warnungen.

                Das dürfte nix mit der eingestellten Weiterentwicklung zu tun haben. Die kommen nur bei der Installation. Am besten zeigst du mal die Warnungen, damit wir keine Glaskugel brauchen...

                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                M 1 Antwort Letzte Antwort
                0
                • AlCalzoneA AlCalzone

                  @MartyBr sagte in Alternative für "request" Paket?:

                  Ich bekomme im Log Warnungen.

                  Das dürfte nix mit der eingestellten Weiterentwicklung zu tun haben. Die kommen nur bei der Installation. Am besten zeigst du mal die Warnungen, damit wir keine Glaskugel brauchen...

                  M Offline
                  M Offline
                  MartyBr
                  schrieb am zuletzt editiert von
                  #13

                  @AlCalzone Ich habe gerade Updates eingespielt und neu gestartet. Die nächste Warnung stelle ich hier ein.

                  Gruß
                  Martin


                  Intel NUCs mit Proxmox / Iobroker als VM unter Debian
                  Raspeberry mit USB Leseköpfen für Smartmeter
                  Homematic und Homematic IP

                  1 Antwort Letzte Antwort
                  0
                  • M MartyBr

                    @AlCalzone Hallo, ich suche gerade eine Anleitung, wie man das Modul "request" gegen "axios" tauscht. Ich habe einige Scripte, die ich aktualisieren möchte.
                    Leider finde ich sowohl in Google als auch hier im Forum keine Anleitung.
                    Kannst du mir kurz auf die Spur bringen?

                    haus-automatisierungH Online
                    haus-automatisierungH Online
                    haus-automatisierung
                    Developer Most Active
                    schrieb am zuletzt editiert von
                    #14

                    @MartyBr sagte in Alternative für "request" Paket?:

                    Hallo, ich suche gerade eine Anleitung, wie man das Modul "request" gegen "axios" tauscht.

                    Anleitungen nicht, aber eventuell hilft Dir mein diff?

                    https://github.com/klein0r/ioBroker.luftdaten/commit/ee5fa18817fdc22f9bb50ee8ec26f6c8e574fd22#diff-7a9076d6d94e62c13d641aa71f19ae8e

                    Oder auch

                    https://github.com/klein0r/ioBroker.octoprint/commit/55a3d85f475416041eee0d5899dd0e6dccbc82e8

                    Generell ist die Doku von Axios echt gut gemacht. Und ich finde es auch viel schöner damit zu arbeiten, als mit Request.

                    🧑‍🎓 Autor des beliebten ioBroker-Master-Kurses
                    🎥 Tutorials rund um das Thema DIY-Smart-Home: https://haus-automatisierung.com/
                    📚 Meine inoffizielle ioBroker Dokumentation

                    M 1 Antwort Letzte Antwort
                    0
                    • haus-automatisierungH haus-automatisierung

                      @MartyBr sagte in Alternative für "request" Paket?:

                      Hallo, ich suche gerade eine Anleitung, wie man das Modul "request" gegen "axios" tauscht.

                      Anleitungen nicht, aber eventuell hilft Dir mein diff?

                      https://github.com/klein0r/ioBroker.luftdaten/commit/ee5fa18817fdc22f9bb50ee8ec26f6c8e574fd22#diff-7a9076d6d94e62c13d641aa71f19ae8e

                      Oder auch

                      https://github.com/klein0r/ioBroker.octoprint/commit/55a3d85f475416041eee0d5899dd0e6dccbc82e8

                      Generell ist die Doku von Axios echt gut gemacht. Und ich finde es auch viel schöner damit zu arbeiten, als mit Request.

                      M Offline
                      M Offline
                      MartyBr
                      schrieb am zuletzt editiert von
                      #15

                      @haus-automatisierung Vielen Dank. Ich habe mal versucht, ein Script umzustellen, leider erfolglos. Ich vermute nun, dass hier der Server überlastet war (Wunderground). Ich stelle mal das Intervall größer.
                      Deine Doku werde ich mir mal "reinziehen". Ich gebe danacRückmeldung über die erfolgreiche Migration :grin:

                      Gruß
                      Martin


                      Intel NUCs mit Proxmox / Iobroker als VM unter Debian
                      Raspeberry mit USB Leseköpfen für Smartmeter
                      Homematic und Homematic IP

                      1 Antwort Letzte Antwort
                      0
                      • X Offline
                        X Offline
                        xawa
                        schrieb am zuletzt editiert von
                        #16

                        Mit request hab ich kein Problem, mich an der Login Seite anzumelden und danach in eine Unterseite zu gehen um mein json abzurufen. Da ihr ja ratet zu axios zu wechseln hab ich mal einen ersten Test gewagt.

                        Mit axios bekomm ich es einfach nicht hin. Die Anmeldung an der /web/login Seite klappt wunderbar, will ich jedoch dann in die Unterseite /api/client/12345678/status, dann bekomm ich immer die Meldung, dass die Anmeldung fehlgeschlagen ist. Könnt ihr mir helfen?

                        const axios = require('axios');

                        webLogin();

                        function webLogin() {
                        var API_SERVER = 'https://a-site-with-api-functions';
                        var email = 'myemail';
                        var password = 'mypassword';

                        axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true })
                        .then(function(response) {
                                //klappt wunderbar
                                 console.log('Authenticated');
                                
                                //folgendes scheitert dann an der 
                                 axios.get(API_SERVER + '/api/client/12345678/status', { withCredentials: true })
                        
                               }).catch(function(error) {
                                 console.log('Error on Authentication');
                            });
                        

                        }

                        Hier ein Auszug aus der Fehlermeldung in der Konsole:
                        _header: 'GET /api/client/27494629/status HTTP/1.1\r\n' +
                        'Accept: application/json, text/plain, /\r\n' +
                        'User-Agent: axios/0.21.1\r\n' +
                        'Host: www.rika-firenet.com\r\n' +
                        'Connection: close\r\n' +
                        '\r\n',
                        _keepAliveTimeout: 0,
                        _onPendingData: [Function: noopPendingOutput],
                        agent: [Agent],
                        socketPath: undefined,
                        method: 'GET',
                        maxHeaderSize: undefined,
                        insecureHTTPParser: undefined,
                        path: '/api/client/12345678/status',
                        _ended: true,
                        timeoutCb: null,
                        upgradeOrConnect: false,
                        parser: null,
                        maxHeadersCount: null,
                        reusedSocket: false,
                        host: 'www.rika-firenet.com',
                        protocol: 'https:',
                        _redirectable: [Writable],
                        [Symbol(kCapture)]: false,
                        [Symbol(kNeedDrain)]: false,
                        [Symbol(corked)]: 0,
                        [Symbol(kOutHeaders)]: [Object: null prototype]
                        data: 'Authorisation required!'
                        isAxiosError: true,
                        toJSON: [Function: toJSON]

                        1 Antwort Letzte Antwort
                        0
                        • X Offline
                          X Offline
                          xawa
                          schrieb am zuletzt editiert von
                          #17

                          Hallo Leute, zumindest bin ich bei meinem Adapter schon mal etwas weiter indem ich den Weblogin und das Holen der Values getrennt hab und zumindest keine axios Fehler bezügl. fehlerhafte Authentisierung im Log bekomme.
                          Allerdings funktionieren 2 Sachen nicht:

                          1.) this.log.info funktioniert in diesen try - catch Blöcken von axios nicht, sondern nur außerhalb.
                          Folgendes erscheint im Log des Adapters, wenn ich mit this.log.info('') etwas reinschreiben möchte:
                          (1338) TypeError: Cannot read property 'log' of undefined at /opt/iobroker/node_modules/iobroker.andi-axios/main.js:107:11 at processTicksAndRejections (internal/process/task_queues.js:97:5)
                          (1338) unhandled promise rejection: Cannot read property 'log' of undefined
                          Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().

                          Bei Matthias Kleine und seinem Luftdaten-Adapter funktioniert this.log... ja auch und ich hab hier keine besondere Definition gesehen (https://github.com/klein0r/ioBroker.luftdaten/blob/master/main.js)

                          2.) wie komme ich zu meinen Values im json und wie kann ich die im Log ausgeben, damit ich zumindest mal sehe, welche Daten daherkommen?

                          Anbei ein Auszug meiner main.js Weiß hier jemand Rat von euch?

                          async onReady() {
                          //aufruf von Weblogin 	
                          await this.webLogin();
                          //und danach die Werte holen
                          this.getstoveValues();
                          }
                          
                          webLogin() {
                          	axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true })
                          	.then(function(response) {			
                          		this.log.info('local request done'); //wird nicht ins log geschrieben
                          	}).catch(function(error) {
                          	  this.log.info('Error on Authentication'); //wird nicht ins log geschrieben
                          	});
                          }
                          
                          getstoveValues() {
                             axios.get(API_SERVER + '/api/client/12345678/status', { withCredentials: true, responseType: 'json' })
                             .then(function(response) {
                          	const content = response.data;
                          	this.log.info(JSON.stringify(content)); //wird nicht ins log geschrieben
                            }).catch(function(error) {
                          	this.log.error(Error); //wird nicht ins log geschrieben
                            });
                            this.log.info("test"); //das WIRD ins log geschrieben
                          }
                          
                          AlCalzoneA 1 Antwort Letzte Antwort
                          0
                          • X xawa

                            Hallo Leute, zumindest bin ich bei meinem Adapter schon mal etwas weiter indem ich den Weblogin und das Holen der Values getrennt hab und zumindest keine axios Fehler bezügl. fehlerhafte Authentisierung im Log bekomme.
                            Allerdings funktionieren 2 Sachen nicht:

                            1.) this.log.info funktioniert in diesen try - catch Blöcken von axios nicht, sondern nur außerhalb.
                            Folgendes erscheint im Log des Adapters, wenn ich mit this.log.info('') etwas reinschreiben möchte:
                            (1338) TypeError: Cannot read property 'log' of undefined at /opt/iobroker/node_modules/iobroker.andi-axios/main.js:107:11 at processTicksAndRejections (internal/process/task_queues.js:97:5)
                            (1338) unhandled promise rejection: Cannot read property 'log' of undefined
                            Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch().

                            Bei Matthias Kleine und seinem Luftdaten-Adapter funktioniert this.log... ja auch und ich hab hier keine besondere Definition gesehen (https://github.com/klein0r/ioBroker.luftdaten/blob/master/main.js)

                            2.) wie komme ich zu meinen Values im json und wie kann ich die im Log ausgeben, damit ich zumindest mal sehe, welche Daten daherkommen?

                            Anbei ein Auszug meiner main.js Weiß hier jemand Rat von euch?

                            async onReady() {
                            //aufruf von Weblogin 	
                            await this.webLogin();
                            //und danach die Werte holen
                            this.getstoveValues();
                            }
                            
                            webLogin() {
                            	axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true })
                            	.then(function(response) {			
                            		this.log.info('local request done'); //wird nicht ins log geschrieben
                            	}).catch(function(error) {
                            	  this.log.info('Error on Authentication'); //wird nicht ins log geschrieben
                            	});
                            }
                            
                            getstoveValues() {
                               axios.get(API_SERVER + '/api/client/12345678/status', { withCredentials: true, responseType: 'json' })
                               .then(function(response) {
                            	const content = response.data;
                            	this.log.info(JSON.stringify(content)); //wird nicht ins log geschrieben
                              }).catch(function(error) {
                            	this.log.error(Error); //wird nicht ins log geschrieben
                              });
                              this.log.info("test"); //das WIRD ins log geschrieben
                            }
                            
                            AlCalzoneA Offline
                            AlCalzoneA Offline
                            AlCalzone
                            Developer
                            schrieb am zuletzt editiert von
                            #18

                            @xawa sagte in Alternative für "request" Paket?:

                            1.) this.log.info funktioniert in diesen try - catch Blöcken von axios nicht, sondern nur außerhalb.

                            Das liegt an function () { ... }, hierbei wird der Wert von this nicht erhalten. Um dieses Problem zu beheben, kannst du die durch Pfeilfunktionen ersetzen.

                            wie komme ich zu meinen Values im json und wie kann ich die im Log ausgeben, damit ich zumindest mal sehe, welche Daten daherkommen?

                            Ich würde async/await nutzen, das umgeht auch dein Problem 1:

                            async webLogin() {
                                try {
                            	const response = await axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true });
                                    // in response steht jetzt die Antwort
                                    // wenn du sie außerhalb der Funktion nutzen willst:
                                    // return response; // oder einen Teil davon
                                } catch (e) {
                                    // fehler behandeln/loggen
                                }
                            }
                            

                            Die Funktion webLogin musst du dann auch mit await aufrufen.

                            Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                            X 1 Antwort Letzte Antwort
                            0
                            • AlCalzoneA AlCalzone

                              @xawa sagte in Alternative für "request" Paket?:

                              1.) this.log.info funktioniert in diesen try - catch Blöcken von axios nicht, sondern nur außerhalb.

                              Das liegt an function () { ... }, hierbei wird der Wert von this nicht erhalten. Um dieses Problem zu beheben, kannst du die durch Pfeilfunktionen ersetzen.

                              wie komme ich zu meinen Values im json und wie kann ich die im Log ausgeben, damit ich zumindest mal sehe, welche Daten daherkommen?

                              Ich würde async/await nutzen, das umgeht auch dein Problem 1:

                              async webLogin() {
                                  try {
                              	const response = await axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true });
                                      // in response steht jetzt die Antwort
                                      // wenn du sie außerhalb der Funktion nutzen willst:
                                      // return response; // oder einen Teil davon
                                  } catch (e) {
                                      // fehler behandeln/loggen
                                  }
                              }
                              

                              Die Funktion webLogin musst du dann auch mit await aufrufen.

                              X Offline
                              X Offline
                              xawa
                              schrieb am zuletzt editiert von
                              #19

                              Hallo AlCalzone, vielen Dank für deine Antwort. Was wären wir Änfänger ohne euch Profis.
                              webLogin funktioniert prima, allerdings bekomme ich dann einen Authentifizierungsfehler in der Funktion getstoveValues(), wenn ich das json von der Statusseite (welche ja nicht die gleiche Seite ist, bei der ich mich anmelde) abrufen will. Irgendwie scheint die Speicherung vom cookie (withCredentials: true) nicht zu funktionieren.

                              Mein Ablaufplan ist folgender und mit request (anstatt axios) funktioniert der Ablauf auch super:

                              1.) ich rufe in der onReady() vom Adapter mein webLogin() auf (webLogin und Log funktioniert jetzt prima)
                              2.) wenn weblogin nicht in catch läuft, soll getstoveValues() aufgerufen werden und die Daten vom json holen. Und da bekomme ich im Log dann: "getstoveValues: Request failed with status code 401" zurück (meine Meldung eben aus der catch - e.message)

                               async onReady() {
                                  await this.webLogin();
                               }
                              
                              async webLogin() {
                              	try {
                              		const response = await axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true });
                              		// in response steht jetzt die Antwort
                              		// wenn du sie außerhalb der Funktion nutzen willst:
                              		// return response; // oder einen Teil davon
                              		this.log.info('webLogin OK')
                              		
                              		//getstoveValues aufrufen, wenn webLogin OK
                              		await this.getstoveValues();
                              	} catch (e) {
                              		// fehler behandeln/loggen
                              		this.log.error('webLogin' + e.message);
                              	}
                              }
                              
                              async getstoveValues() {
                              	try {
                              		const response2 = axios.get(API_SERVER + '/api/client/12345678/status', { withCredentials: true })
                              		// in response steht jetzt die Antwort
                              		// wenn du sie außerhalb der Funktion nutzen willst:
                              		// return response; // oder einen Teil davon
                              		this.log.info(JSON.stringify((await response2).data));
                              	} catch (e) {
                              		// fehler behandeln/loggen
                              		this.log.error('getstoveValues: ' + e.message);
                              	}
                              }
                              

                              Viele Grüße, Andi

                              AlCalzoneA arteckA 2 Antworten Letzte Antwort
                              0
                              • X xawa

                                Hallo AlCalzone, vielen Dank für deine Antwort. Was wären wir Änfänger ohne euch Profis.
                                webLogin funktioniert prima, allerdings bekomme ich dann einen Authentifizierungsfehler in der Funktion getstoveValues(), wenn ich das json von der Statusseite (welche ja nicht die gleiche Seite ist, bei der ich mich anmelde) abrufen will. Irgendwie scheint die Speicherung vom cookie (withCredentials: true) nicht zu funktionieren.

                                Mein Ablaufplan ist folgender und mit request (anstatt axios) funktioniert der Ablauf auch super:

                                1.) ich rufe in der onReady() vom Adapter mein webLogin() auf (webLogin und Log funktioniert jetzt prima)
                                2.) wenn weblogin nicht in catch läuft, soll getstoveValues() aufgerufen werden und die Daten vom json holen. Und da bekomme ich im Log dann: "getstoveValues: Request failed with status code 401" zurück (meine Meldung eben aus der catch - e.message)

                                 async onReady() {
                                    await this.webLogin();
                                 }
                                
                                async webLogin() {
                                	try {
                                		const response = await axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true });
                                		// in response steht jetzt die Antwort
                                		// wenn du sie außerhalb der Funktion nutzen willst:
                                		// return response; // oder einen Teil davon
                                		this.log.info('webLogin OK')
                                		
                                		//getstoveValues aufrufen, wenn webLogin OK
                                		await this.getstoveValues();
                                	} catch (e) {
                                		// fehler behandeln/loggen
                                		this.log.error('webLogin' + e.message);
                                	}
                                }
                                
                                async getstoveValues() {
                                	try {
                                		const response2 = axios.get(API_SERVER + '/api/client/12345678/status', { withCredentials: true })
                                		// in response steht jetzt die Antwort
                                		// wenn du sie außerhalb der Funktion nutzen willst:
                                		// return response; // oder einen Teil davon
                                		this.log.info(JSON.stringify((await response2).data));
                                	} catch (e) {
                                		// fehler behandeln/loggen
                                		this.log.error('getstoveValues: ' + e.message);
                                	}
                                }
                                

                                Viele Grüße, Andi

                                AlCalzoneA Offline
                                AlCalzoneA Offline
                                AlCalzone
                                Developer
                                schrieb am zuletzt editiert von
                                #20

                                @xawa Ehrlich gesagt weiß ich es nicht. Habe bisher nicht mit HTTP-Authentifizierung gearbeitet. Was man so im Internet findet, scheint mit deinem Ansatz übereinzustimmen...

                                Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                X 1 Antwort Letzte Antwort
                                0
                                • X xawa

                                  Hallo AlCalzone, vielen Dank für deine Antwort. Was wären wir Änfänger ohne euch Profis.
                                  webLogin funktioniert prima, allerdings bekomme ich dann einen Authentifizierungsfehler in der Funktion getstoveValues(), wenn ich das json von der Statusseite (welche ja nicht die gleiche Seite ist, bei der ich mich anmelde) abrufen will. Irgendwie scheint die Speicherung vom cookie (withCredentials: true) nicht zu funktionieren.

                                  Mein Ablaufplan ist folgender und mit request (anstatt axios) funktioniert der Ablauf auch super:

                                  1.) ich rufe in der onReady() vom Adapter mein webLogin() auf (webLogin und Log funktioniert jetzt prima)
                                  2.) wenn weblogin nicht in catch läuft, soll getstoveValues() aufgerufen werden und die Daten vom json holen. Und da bekomme ich im Log dann: "getstoveValues: Request failed with status code 401" zurück (meine Meldung eben aus der catch - e.message)

                                   async onReady() {
                                      await this.webLogin();
                                   }
                                  
                                  async webLogin() {
                                  	try {
                                  		const response = await axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true });
                                  		// in response steht jetzt die Antwort
                                  		// wenn du sie außerhalb der Funktion nutzen willst:
                                  		// return response; // oder einen Teil davon
                                  		this.log.info('webLogin OK')
                                  		
                                  		//getstoveValues aufrufen, wenn webLogin OK
                                  		await this.getstoveValues();
                                  	} catch (e) {
                                  		// fehler behandeln/loggen
                                  		this.log.error('webLogin' + e.message);
                                  	}
                                  }
                                  
                                  async getstoveValues() {
                                  	try {
                                  		const response2 = axios.get(API_SERVER + '/api/client/12345678/status', { withCredentials: true })
                                  		// in response steht jetzt die Antwort
                                  		// wenn du sie außerhalb der Funktion nutzen willst:
                                  		// return response; // oder einen Teil davon
                                  		this.log.info(JSON.stringify((await response2).data));
                                  	} catch (e) {
                                  		// fehler behandeln/loggen
                                  		this.log.error('getstoveValues: ' + e.message);
                                  	}
                                  }
                                  

                                  Viele Grüße, Andi

                                  arteckA Offline
                                  arteckA Offline
                                  arteck
                                  Developer Most Active
                                  schrieb am zuletzt editiert von arteck
                                  #21

                                  @xawa

                                  const response = await axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true });
                                  

                                  du musst schon angeben welche parameter was sind

                                  let res = await axios.post(urlVomServer, { data: `ArrayNum=1&SeriesBatteryNum=1`});
                                  

                                  bei mir sind es ArraNum und SeriesBatteryNum

                                  kast du geschaut was im Header gesendet wird bei login ?

                                  zigbee hab ich, zwave auch, nuc's genauso und HA auch

                                  X 1 Antwort Letzte Antwort
                                  0
                                  • arteckA arteck

                                    @xawa

                                    const response = await axios.post(API_SERVER + '/web/login', { email, password }, { withCredentials: true });
                                    

                                    du musst schon angeben welche parameter was sind

                                    let res = await axios.post(urlVomServer, { data: `ArrayNum=1&SeriesBatteryNum=1`});
                                    

                                    bei mir sind es ArraNum und SeriesBatteryNum

                                    kast du geschaut was im Header gesendet wird bei login ?

                                    X Offline
                                    X Offline
                                    xawa
                                    schrieb am zuletzt editiert von
                                    #22

                                    @arteck ich glaub, da liegt ein Missverständnis.
                                    Zur Abfolge:
                                    1.) Ich melde mich mit axios.post auf folgender Seite an, was auch prima funktioniert:
                                    https://www.rika-firenet.com/web/login
                                    2.) Danach möchte ich mit axios.get das jason abfragen, das auf folgender Seite liegt:
                                    https://www.rika-firenet.com/api/client/12345678/status (12345678 ist meine OfenID, natürlich abgeändert)
                                    Und genau dieser Zugriff scheitert dann an einem Authentifizierungsfehler, obwohl der vorher erfolgreiche Zugriff ja mit einem cookie zwischengespeichert werden müsste (withCredentials: true)

                                    1 Antwort Letzte Antwort
                                    0
                                    • AlCalzoneA AlCalzone

                                      @xawa Ehrlich gesagt weiß ich es nicht. Habe bisher nicht mit HTTP-Authentifizierung gearbeitet. Was man so im Internet findet, scheint mit deinem Ansatz übereinzustimmen...

                                      X Offline
                                      X Offline
                                      xawa
                                      schrieb am zuletzt editiert von
                                      #23

                                      @AlCalzone Hab trotzdem Vielen Dank

                                      1 Antwort Letzte Antwort
                                      0
                                      • X Offline
                                        X Offline
                                        xawa
                                        schrieb am zuletzt editiert von
                                        #24

                                        Vielleicht sollte ich ein eigenes Thema dazu öffnen, da es hier ja grundlegend nur um die Alternativen vom Paket "request" geht?
                                        Bin doch sicher nicht der einzige, der sich per axios.post an einer Login-Seite anmeldet und per axios.get auf der API-Seite der gleichen domain ein json holen möchte.
                                        Wie bereits erwähnt funktioniert es mit "request" super, da mit "const request = require('request').defaults({jar: true});" die Anmeldung für alle folgenden requests gespeichert wird, allerdings rät man ja allgemein zu axios zu wechseln.

                                        AlCalzoneA 1 Antwort Letzte Antwort
                                        0
                                        • X xawa

                                          Vielleicht sollte ich ein eigenes Thema dazu öffnen, da es hier ja grundlegend nur um die Alternativen vom Paket "request" geht?
                                          Bin doch sicher nicht der einzige, der sich per axios.post an einer Login-Seite anmeldet und per axios.get auf der API-Seite der gleichen domain ein json holen möchte.
                                          Wie bereits erwähnt funktioniert es mit "request" super, da mit "const request = require('request').defaults({jar: true});" die Anmeldung für alle folgenden requests gespeichert wird, allerdings rät man ja allgemein zu axios zu wechseln.

                                          AlCalzoneA Offline
                                          AlCalzoneA Offline
                                          AlCalzone
                                          Developer
                                          schrieb am zuletzt editiert von
                                          #25

                                          @xawa Ggf. liegt es daran, dass die Beispiele für Axios im Browser gelten, der von Haus aus Cookie-Support hat.
                                          In Node.js musst du den nachrüsten:
                                          https://github.com/3846masa/axios-cookiejar-support#usage

                                          Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

                                          X 1 Antwort Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          336

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe