Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Frage] HTTP POST - Cookie einfügen ? (Sony TV)

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Frage] HTTP POST - Cookie einfügen ? (Sony TV)

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

      MOD-Edit by eric2905; 03.05.2017/09:55; Betreff angepasst

      Hallo,

      ich möchte meinen Sony Bravia TV mit ioBroker steuern, der syntax und die vorgehensweise sind mir bekannt.

      Der TV möchte JSON Strings per HTTP POST haben, bevor er aber eine Steuerung zulässt muß man sich als "Fernbedienung" Registrieren, lesen geht auch ohne Registrierung

      die Vorgehensweise zur Registrierung ist wie folgt:

      1. POST an http://192.168.xxx.xxx/sony/accessControl mit JSON String:

      {"id":13,"method":"actRegister","version":"1.0","params":[{"clientid":"ioBroker:1","nickname":"ioBroker"},[{"clientid":"ioBroker:1","value":"yes","nickname":"ioBroker","function":"WOL"}]]}

      2. TV zeigt darauf hin eine Meldung mit PIN

      3. PIN in base64 codieren und im Header mit 'Authorization':'Basic Ojg2MzA=' zurück schicken

      4. TV Sendet darauf hin ein Cookie z.b. auth=eefbfe6c3bdab6b7876c560cbe292ddb82f425bca256b226d487w03b39fc6a5b <- bis hier hin alles ok, und läuft

      5. das Cookie muß jetzt für jeden weitern POST Request mit gesendet werden

      jetzt das Problem: wie sende ich das coockie ? ich denke es muß im Header definiert werden ?!

      meine Code bis jetz:

      var request = require('request');
      
      // Configure the request
      var options = {
          url: 'http://192.168.188.24/sony/system',
          //url: 'http://192.168.188.24/sony/accessControl',
          method: 'POST',
          headers: {
          'Authorization':'Basic Ojg2MzA=',
          },
      
          form: '{"method": "setPowerStatus","params": [{"status": false}],"id": 102}' 
          //form:' {"id":13,"method":"actRegister","version":"1.0","params":[{"clientid":"ioBroker:1","nickname":"ioBroker"},[{"clientid":"ioBroker:1","value":"yes","nickname":"ioBroker","function":"WOL"}]]}'
      };
      
      // Start the request
      request(options, function (error, response, body) {
          if (!error && response.statusCode == 200) {
              // Print out the response body
              //console.log(body);
          }
      
          console.log('Response:' + JSON.stringify(response));
          console.log('Error: ' + error);
          console.log('Body: '+ body);
      
      });
      
      1 Reply Last reply Reply Quote 0
      • AlCalzone
        AlCalzone Developer last edited by

        Schau mal hier: https://github.com/request/request

        fast ganz unten

        > Cookies are disabled by default (else, they would be used in subsequent requests). To enable cookies, set jar to true (either in defaults or options).

        Da sind auch Beispiele für kompliziertere Fälle, wie das Einfügen eines eigenen Cookies:

        var j = request.jar();
        var cookie = request.cookie('key1=value1');
        var url = 'http://www.google.com';
        j.setCookie(cookie, url);
        request({url: url, jar: j}, function () {
          request('http://images.google.com')
        })
        
        1 Reply Last reply Reply Quote 0
        • L
          Lucky last edited by

          ok, das erklärt schon mal etwas..

          allerdings stehe ich trotzdem gerade aufm Schlauch 😕 wo muss ich entsprechend in meinem Code anpassungen machen ? alles was ich bis jetzt versucht habe, hat leider nicht funktioniert

          1 Reply Last reply Reply Quote 0
          • L
            Lucky last edited by

            hat sich erledigt, klappt jetzt 🙂

            hier die Lösung

            var request = require('request');
            var url='http://192.168.188.24/sony/system';
            //url: 'http://192.168.188.24/sony/accessControl',
            
            PIN=Buffer.from(':'+'0396');
            
            // Configure the request
            var options = {
                url: url,
                jar: true,
                method: 'POST',
                headers: {'Authorization':'Basic '+ PIN.toString('base64')},
                form: '{"method": "setPowerStatus","params": [{"status": false}],"id": 102}' 
                //form:' {"id":13,"method":"actRegister","version":"1.0","params":[{"clientid":"ioBroker:1","nickname":"ioBroker"},[{"clientid":"ioBroker:1","value":"yes","nickname":"ioBroker","function":"WOL"}]]}'
            };
            
            var j = request.jar();
            var cookie = request.cookie('auth=a63b94235f935cc102ef679eca03081b217b0df10c641099c90d02f8c651d0fe');
            
            // Start the request
            
            j.setCookie(cookie,url);
            request(options, function (error, response, body) {
            
                console.log('Response:' + JSON.stringify(response));
                console.log('Error: ' + error);
                console.log('Body: '+ body);
            
            });
            
            1 Reply Last reply Reply Quote 0
            • AlCalzone
              AlCalzone Developer last edited by

              Wenn ich das richtig sehe, solltest du die manuelle Cookie-Zuweisung nicht brauchen, wenn du beim initialen Request jar:true festlegst. Aber wenns funktioniert, ist das schon mal was.

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

              Support us

              ioBroker
              Community Adapters
              Donate

              459
              Online

              31.7k
              Users

              79.8k
              Topics

              1.3m
              Posts

              2
              5
              1099
              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