Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [SOLVED] require request ersetzen durch httpPost in JS

NEWS

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    5
    1
    40

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    24
    1
    1.4k

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

[SOLVED] require request ersetzen durch httpPost in JS

Scheduled Pinned Locked Moved JavaScript
16 Posts 6 Posters 2.0k Views 6 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • paul53P paul53

    @blackmike sagte: Ich kann hier also nix kaputtmachen

    Habe zwar auch keine Ahnung, aber würde es dann mal so versuchen:

        const options = {
            headers: GetAuth (apikey,path_real_query,lang),
            body: '{"sn": "'+SerNr+'", "variables": []}'
        };
        log (options);
        httpPost(domain+path_real_query, options, function(error, response) {
    

    Ergebnis in response.data.

    BlackmikeB Offline
    BlackmikeB Offline
    Blackmike
    wrote on last edited by Blackmike
    #3

    @paul53 Danke erstmal für den code, ich kann erstmal einen post absetzen
    aber mit dem header das klappt so nicht, fehlermeldung der API, header ungültig (Meldung kommt auch wenn kein header vorhanden, also auskommentiert)

    die Gleiche funktion mit dem alten request geht aber... und da komm ich grad nicht weiter

    der gültige header sähe so aus: (token xxx-ed)

     headers: { 'Content-Type': 'application/json', token: 'xxxxx', lang: 'de', timestamp: '1718222454810', signature: '0a3ca762a50675917adadcb49ed272b2', 'User-Agent': 'Meiner' },
    

    Black

    die Wahrheit ist ein Chor aus Wind

    HomoranH M 2 Replies Last reply
    0
    • BlackmikeB Blackmike

      @paul53 Danke erstmal für den code, ich kann erstmal einen post absetzen
      aber mit dem header das klappt so nicht, fehlermeldung der API, header ungültig (Meldung kommt auch wenn kein header vorhanden, also auskommentiert)

      die Gleiche funktion mit dem alten request geht aber... und da komm ich grad nicht weiter

      der gültige header sähe so aus: (token xxx-ed)

       headers: { 'Content-Type': 'application/json', token: 'xxxxx', lang: 'de', timestamp: '1718222454810', signature: '0a3ca762a50675917adadcb49ed272b2', 'User-Agent': 'Meiner' },
      

      Black

      HomoranH Do not disturb
      HomoranH Do not disturb
      Homoran
      Global Moderator Administrators
      wrote on last edited by
      #4

      @blackmike Hallo black,

      ich hab schonmal gar keine Ahnung.
      Aber wenn ich das richtig verstanden habe, hat httpGet / httpPost gar keinen body mehr.
      Mag sein dass das nur für die Antwort gilt, glaube ich aber nicht.

      Also muss man wahrscheinlich den body im post irgendwie ersetzen.

      Aber wie, so dass die Api die message versteht.

      möglich dass es analog zu response.data noch ein data gibt.

      Wobei die Frage bleibt, ob die API auch http post versteht

      kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

      der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

      1 Reply Last reply
      0
      • BlackmikeB Blackmike

        @paul53 Danke erstmal für den code, ich kann erstmal einen post absetzen
        aber mit dem header das klappt so nicht, fehlermeldung der API, header ungültig (Meldung kommt auch wenn kein header vorhanden, also auskommentiert)

        die Gleiche funktion mit dem alten request geht aber... und da komm ich grad nicht weiter

        der gültige header sähe so aus: (token xxx-ed)

         headers: { 'Content-Type': 'application/json', token: 'xxxxx', lang: 'de', timestamp: '1718222454810', signature: '0a3ca762a50675917adadcb49ed272b2', 'User-Agent': 'Meiner' },
        

        Black

        M Online
        M Online
        MCU
        wrote on last edited by
        #5

        @blackmike Doku -> https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httppost

        httpPost(
            'http://jsonplaceholder.typicode.com/posts',
            {
                title: 'foo',
                body: 'bar',
                userId: 1
            },
            {
                timeout: 2000,
                basicAuth: {
                    user: 'admin',
                    password: 'dg2LdALNznHFNo'
                },
                headers: {
                    'Cookie': 'PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1'
                }
            },
            (error, response) => {
                if (!error) {
                    console.log(response.statusCode);
                    console.log(response.data);
                    console.log(response.headers);
                } else {
                    console.error(error);
                }
            }
        );
        

        NUC i7 64GB mit Proxmox ---- Jarvis Infos Aktualisierungen der Doku auf Instagram verfolgen -> mcuiobroker Instagram
        Wenn Euch mein Vorschlag geholfen hat, bitte rechts "^" klicken.

        BlackmikeB 1 Reply Last reply
        1
        • M MCU

          @blackmike Doku -> https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httppost

          httpPost(
              'http://jsonplaceholder.typicode.com/posts',
              {
                  title: 'foo',
                  body: 'bar',
                  userId: 1
              },
              {
                  timeout: 2000,
                  basicAuth: {
                      user: 'admin',
                      password: 'dg2LdALNznHFNo'
                  },
                  headers: {
                      'Cookie': 'PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1'
                  }
              },
              (error, response) => {
                  if (!error) {
                      console.log(response.statusCode);
                      console.log(response.data);
                      console.log(response.headers);
                  } else {
                      console.error(error);
                  }
              }
          );
          
          BlackmikeB Offline
          BlackmikeB Offline
          Blackmike
          wrote on last edited by
          #6

          @mcu thnx für die Doku. Ich hatte die nur für httpGet gefunden. Erste versuche sehen gut aus. Hab mir beim probieren aber irgendwas kaputtgemacht im spielesystem. Ich guck heute Abend weiter und werde berichten.

          @Homoran
          Die API erwartet bei dem skizzierten Aufruf ein http post. Get geht da nicht. Mit request funktionieren die Scripte ja mit "POST" auf dem Produktivsystem. Ich will nur auf dem spielesystem sucessiv die Scripte von request auf entweder httpget bzw httppost umbauen und testen und nach Validierung ins produktivsystem übernehmen.

          Thnx für eure Hilfestellung

          Black

          die Wahrheit ist ein Chor aus Wind

          HomoranH 1 Reply Last reply
          1
          • BlackmikeB Blackmike

            @mcu thnx für die Doku. Ich hatte die nur für httpGet gefunden. Erste versuche sehen gut aus. Hab mir beim probieren aber irgendwas kaputtgemacht im spielesystem. Ich guck heute Abend weiter und werde berichten.

            @Homoran
            Die API erwartet bei dem skizzierten Aufruf ein http post. Get geht da nicht. Mit request funktionieren die Scripte ja mit "POST" auf dem Produktivsystem. Ich will nur auf dem spielesystem sucessiv die Scripte von request auf entweder httpget bzw httppost umbauen und testen und nach Validierung ins produktivsystem übernehmen.

            Thnx für eure Hilfestellung

            Black

            HomoranH Do not disturb
            HomoranH Do not disturb
            Homoran
            Global Moderator Administrators
            wrote on last edited by Homoran
            #7

            @blackmike hab inzwischen auch versucht das Konstrukt nachzuvollziehen und bei Mozilla developers und stackoverflow passende Passagen gefunden, aber mangels js Kenntnissen nicht zuordnen können was mit dem body bei httpPost passiert, der ja tatsächlich gesendet werden kann/muss.

            Die Doku hatte ich leider auch nicht gefunden.

            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

            BlackmikeB 1 Reply Last reply
            0
            • HomoranH Homoran

              @blackmike hab inzwischen auch versucht das Konstrukt nachzuvollziehen und bei Mozilla developers und stackoverflow passende Passagen gefunden, aber mangels js Kenntnissen nicht zuordnen können was mit dem body bei httpPost passiert, der ja tatsächlich gesendet werden kann/muss.

              Die Doku hatte ich leider auch nicht gefunden.

              BlackmikeB Offline
              BlackmikeB Offline
              Blackmike
              wrote on last edited by Blackmike
              #8

              Dank dem Doku Link von MCU, ohne den das nicht geklappt hätte, habe ich nun den Frame, um request Posts in das neue httpPost umzusetzen.

              Funktional war die Benutzung des Body sowie eigene Header.
              Hat also erfolgreich geklappt

              Das adäquate Konstrukt schaut dann so aus:

              function device_realqueryV2 (SerNr) {
                 const body= '{"sn": "'+SerNr+'", "variables": []}'
                 const headers={headers: GetAuth (apikey,path_real_query,lang)}    
                 httpPost (domain+path_real_query,body,headers,function (err,response) {
                   var jdev= response.data  
                   log (response.data)
                 })    
              }
              

              Thnx für die Hilfestellung

              Black

              die Wahrheit ist ein Chor aus Wind

              haus-automatisierungH 1 Reply Last reply
              0
              • BlackmikeB Blackmike

                Dank dem Doku Link von MCU, ohne den das nicht geklappt hätte, habe ich nun den Frame, um request Posts in das neue httpPost umzusetzen.

                Funktional war die Benutzung des Body sowie eigene Header.
                Hat also erfolgreich geklappt

                Das adäquate Konstrukt schaut dann so aus:

                function device_realqueryV2 (SerNr) {
                   const body= '{"sn": "'+SerNr+'", "variables": []}'
                   const headers={headers: GetAuth (apikey,path_real_query,lang)}    
                   httpPost (domain+path_real_query,body,headers,function (err,response) {
                     var jdev= response.data  
                     log (response.data)
                   })    
                }
                

                Thnx für die Hilfestellung

                Black

                haus-automatisierungH Offline
                haus-automatisierungH Offline
                haus-automatisierung
                Developer Most Active
                wrote on last edited by haus-automatisierung
                #9

                @blackmike sagte in require (request) ersetzen durch "httpPost" in javascript:

                const body= '{"sn": "'+SerNr+'", "variables": []}'

                Du kannst auch direkt ein Objekt übergeben und musst nicht so komisch JSON-Strings zusammenbauen.

                function device_realqueryV2 (SerNr) {
                  httpPost(
                    domain + path_real_query,
                    {
                      sn: SerNr,
                      variables: []
                    },
                    {
                      headers: GetAuth(apikey,path_real_query,lang)
                    },
                    (err, response) => {
                      const data = response.data;
                      log (data);
                    }
                  );
                }
                

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

                1 Reply Last reply
                0
                • BlackmikeB Offline
                  BlackmikeB Offline
                  Blackmike
                  wrote on last edited by
                  #10

                  Generell gute Idee...

                  Aber der body MUSS ein string sein. Als json objekt bekommen ich ein Fail bei der Abfrage.

                  Black

                  die Wahrheit ist ein Chor aus Wind

                  haus-automatisierungH 1 Reply Last reply
                  0
                  • BlackmikeB Blackmike

                    Generell gute Idee...

                    Aber der body MUSS ein string sein. Als json objekt bekommen ich ein Fail bei der Abfrage.

                    Black

                    haus-automatisierungH Offline
                    haus-automatisierungH Offline
                    haus-automatisierung
                    Developer Most Active
                    wrote on last edited by
                    #11

                    @blackmike sagte in [SOLVED] require request ersetzen durch httpPost in JS:

                    MUSS ein string sein. Als json objekt

                    JSON ist auch einfach nur ein String.

                    Muss als Objekt aber auch gehen - dann macht die http-Funktion die JSON-Konvertierung für Dich.

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

                    BlackmikeB 1 Reply Last reply
                    0
                    • haus-automatisierungH haus-automatisierung

                      @blackmike sagte in [SOLVED] require request ersetzen durch httpPost in JS:

                      MUSS ein string sein. Als json objekt

                      JSON ist auch einfach nur ein String.

                      Muss als Objekt aber auch gehen - dann macht die http-Funktion die JSON-Konvertierung für Dich.

                      BlackmikeB Offline
                      BlackmikeB Offline
                      Blackmike
                      wrote on last edited by Blackmike
                      #12

                      @haus-automatisierung
                      :+1:

                      Ging auch... Fehler von mir, es reichte nicht aus, nur die Aussen delimiter wegzunehmen... mit korrektem Object klappte die Abfrage

                      Thnx, Blck

                      die Wahrheit ist ein Chor aus Wind

                      D 1 Reply Last reply
                      0
                      • BlackmikeB Blackmike

                        @haus-automatisierung
                        :+1:

                        Ging auch... Fehler von mir, es reichte nicht aus, nur die Aussen delimiter wegzunehmen... mit korrektem Object klappte die Abfrage

                        Thnx, Blck

                        D Offline
                        D Offline
                        DerGraf123
                        wrote on last edited by
                        #13

                        Hallo Zusammen,

                        ich versuche auch gerade von "request" wegzukommen.
                        Leider scheitere ich bei httpPost um den TNES von Tasker zu erreichen.
                        Javascript 8.6.0

                        Funktionierender Request:

                        request.post({url:'http://192.168.178.51:8765',form:{ sayit: "Sprachausgabe" }},function(error, response, body) { 
                            if (error) log(error, 'error');  
                        });
                        

                        Nicht funktionierender httpPost:

                        httpPost('http://192.168.178.51:8765', { sayit: "Sprachausgabe" }, { timeout: 5000 }, (error, response) => {
                            if (!error) {
                                console.log(response.statusCode);
                                console.log(response.data);
                                console.log(response.headers);
                            } else {
                                console.error(error);
                            }
                        });
                        

                        Als Fehler kommt ein Timeout:

                        
                        javascript.0
                        2024-06-23 11:39:32.376	error	script.js.common.Sayit: timeout of 5000ms exceeded
                        
                        javascript.0
                        2024-06-23 11:39:32.375	error	script.js.common.Sayit httpPost(url=http://192.168.178.51:8765, error=timeout of 5000ms exceeded)
                        

                        Timeout habe ich wie ersichtlich schon testweise hochgedreht.
                        Liegt es evtl. am Port?

                        Für Tipps danke ich schon einmal im Voraus.

                        paul53P 1 Reply Last reply
                        0
                        • D DerGraf123

                          Hallo Zusammen,

                          ich versuche auch gerade von "request" wegzukommen.
                          Leider scheitere ich bei httpPost um den TNES von Tasker zu erreichen.
                          Javascript 8.6.0

                          Funktionierender Request:

                          request.post({url:'http://192.168.178.51:8765',form:{ sayit: "Sprachausgabe" }},function(error, response, body) { 
                              if (error) log(error, 'error');  
                          });
                          

                          Nicht funktionierender httpPost:

                          httpPost('http://192.168.178.51:8765', { sayit: "Sprachausgabe" }, { timeout: 5000 }, (error, response) => {
                              if (!error) {
                                  console.log(response.statusCode);
                                  console.log(response.data);
                                  console.log(response.headers);
                              } else {
                                  console.error(error);
                              }
                          });
                          

                          Als Fehler kommt ein Timeout:

                          
                          javascript.0
                          2024-06-23 11:39:32.376	error	script.js.common.Sayit: timeout of 5000ms exceeded
                          
                          javascript.0
                          2024-06-23 11:39:32.375	error	script.js.common.Sayit httpPost(url=http://192.168.178.51:8765, error=timeout of 5000ms exceeded)
                          

                          Timeout habe ich wie ersichtlich schon testweise hochgedreht.
                          Liegt es evtl. am Port?

                          Für Tipps danke ich schon einmal im Voraus.

                          paul53P Offline
                          paul53P Offline
                          paul53
                          wrote on last edited by paul53
                          #14

                          @DerGraf123
                          Bei request gab es noch das Attribut "form". Versuche mal

                          httpPost('http://192.168.178.51:8765', {form: {sayit: "Sprachausgabe"}}, { timeout: 5000 }, (error, response) => {
                          

                          oder?

                          httpPost('http://192.168.178.51:8765', {form: {sayit: "Sprachausgabe"},  timeout: 5000 }, (error, response) => {
                          

                          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                          haus-automatisierungH D 2 Replies Last reply
                          0
                          • paul53P paul53

                            @DerGraf123
                            Bei request gab es noch das Attribut "form". Versuche mal

                            httpPost('http://192.168.178.51:8765', {form: {sayit: "Sprachausgabe"}}, { timeout: 5000 }, (error, response) => {
                            

                            oder?

                            httpPost('http://192.168.178.51:8765', {form: {sayit: "Sprachausgabe"},  timeout: 5000 }, (error, response) => {
                            
                            haus-automatisierungH Offline
                            haus-automatisierungH Offline
                            haus-automatisierung
                            Developer Most Active
                            wrote on last edited by haus-automatisierung
                            #15

                            @paul53 Erst kommen die Post-Parameter, dann die Optionen für den Request. War also oben schon richtig.

                            httpPost('http://192.168.178.51:8765', { sayit: 'Sprachausgabe' }, { timeout: 5000 }, (error, response) => {
                            

                            https://github.com/ioBroker/ioBroker.javascript/blob/master/docs/en/javascript.md#httppost

                            Im Verbose-Mode sieht man dann auch sehr gut, wie der Request zusammengebaut wird.

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

                            1 Reply Last reply
                            0
                            • paul53P paul53

                              @DerGraf123
                              Bei request gab es noch das Attribut "form". Versuche mal

                              httpPost('http://192.168.178.51:8765', {form: {sayit: "Sprachausgabe"}}, { timeout: 5000 }, (error, response) => {
                              

                              oder?

                              httpPost('http://192.168.178.51:8765', {form: {sayit: "Sprachausgabe"},  timeout: 5000 }, (error, response) => {
                              
                              D Offline
                              D Offline
                              DerGraf123
                              wrote on last edited by DerGraf123
                              #16

                              @paul53 Mit deiner Idee und dem Attribute "form" bekomme ich zwar keinen Timeout mehr, eine Sprachausgabe erfolgt aber nicht. Timeout Variable habe ich wieder rausgenommen, da 2000ms mehr als ausreichend sein sollte.

                              httpPost('http://192.168.178.51:8765', { form: {sayit: 'Sprachausgabe' }}, (error, response) => {
                                  if (!error) {
                                      console.log(response.statusCode);
                                      console.log(response.data);
                                      console.log(response.headers);
                                  } else {
                                      console.error(error);
                                  }
                              });
                              
                              javascript.0	12:09:24.356	info	script.js.common.Sayit: 200
                              javascript.0	12:09:24.356	info	script.js.common.Sayit: <html><head><head><body><h1>Hello, World</h1></body>Header<br/>content-length : 29 remote-addr : 192.168.178.252 http-client-ip : 192.168.178.252 host : 192.168.178.51:8765 content-type : application/json connection : keep-alive accept-encoding : gzip, compress, deflate, br accept : application/json, text/plain, */* user-agent : Mozilla/5.0 (X11; Linux i686; rv:109.0) Gecko/20100101 Firefox/121.0 <br/>----<br/>method = POST<br/>uri = /<br/>Params<br/>NanoHttpd.QUERY_STRING : null<br/></html>
                              javascript.0	12:09:24.356	info	script.js.common.Sayit: Object [AxiosHeaders] { 'content-type': 'text/html', date: 'Sun, 23 Jun 2024 10:09:24 GMT', connection: 'keep-alive', 'content-length': '496' }
                              
                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              594

                              Online

                              32.5k

                              Users

                              81.7k

                              Topics

                              1.3m

                              Posts
                              Community
                              Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                              ioBroker Community 2014-2025
                              logo
                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Home
                              • Recent
                              • Tags
                              • Unread 0
                              • Categories
                              • Unreplied
                              • Popular
                              • GitHub
                              • Docu
                              • Hilfe