Ankündigung

Einklappen
Keine Ankündigung bisher.

Webabfrage https mit Bearer Token

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    HS/FS Webabfrage https mit Bearer Token

    Guten Abend an alle,
    ich muss mal wieder fragen weil ich gerade nicht weiter komme bei einer Webafrage.
    Ich möchte einen SMA Data Manager M abfragen und Daten auslesen.
    Mit firefox und den Entwicklertools, sowie Postman habe ich den aktuellen Token kopiert und kann mit folgender Abfrage in Postman die Daten auslesen:

    Nun
    postman.PNG​gu

    Nun wollte ich das im HS nachbauen wie ich es schon mal bei einem anderen Gerät umgesetzt habe:
    hsabfrage1.PNG
    hsabfrage2.PNG

    Leider bekomme ich da folgende Rückmeldung:
    HTTP/1.1 400 HTTP/0.9 not supported
    Content-Type: text/html;charset=iso-8859-1
    Content-Length: 65
    Connection: close

    <h1>Bad Message 400</h1><pre>reason: HTTP/0.9 not supported</pre>

    Also das müsste ungültiger Lock Token bedeuten.
    Aber warum kann ich mit dem gleichen Token und Postman eine korrekte Antwort erhalten?
    Hat jemand noch einen Tip?

    Grüße Christian

    #2

    Versuch mal mit HTTP/1.1 hinten. Also
    Code:
    GET /api/... HTTP/1.1
    . HTTP/0.9 wird von SMA nicht unterstützt (ist ja ein uraltes Protokoll vom Jahr 1990 wo nur GET unterstützt wird). Wenn HTTP/1.1 nicht geht, dann probier mal mit HTTP/1.0.

    Wireshark könnte mehr Auskunft geben welches Protokoll standardmässig verwendet wird.

    Kommentar


      #3
      Bist du dir sicher, das der Token immer gleich ist? Evtl ändert sich der Token, wenn er von einem anderen Browser oder IP angefragt wird? Ist das evtl. nur ein Session Token? Ist aber nur wild von Jemanden ohne Ahnung geraten.
      Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

      Kommentar


        #4
        Zitat von pitschr Beitrag anzeigen
        Versuch mal mit HTTP/1.1 hinten. Also
        Code:
        GET /api/... HTTP/1.1
        . HTTP/0.9 wird von SMA nicht unterstützt (ist ja ein uraltes Protokoll vom Jahr 1990 wo nur GET unterstützt wird). Wenn HTTP/1.1 nicht geht, dann probier mal mit HTTP/1.0.
        meinst du so:
        GET /api/v1/widgets/gauge/power?componentId=Plant%3A1&type=PvProduction HTTP/1.1

        ?

        dann kommt als Antwort
        <h1>Bad Message 400</h1><pre>reason: Illegal character VCHAR='/'</pre>

        Kommentar


          #5
          Ja, das müsste schon stimmen. Denn deine Anfrage wurde jetzt akzeptiert. Die nächste Fehlermeldung ist sehr wahrscheinlich wegen PostmanRuntime/7.24.0, denn Zeichen "/" ist im Header-Name nicht erlaubt. Da fehlt ein "User-Agent:". Also:
          Code:
          User-Agent: PostmanRuntime/7.24.0

          Kommentar


            #6
            Jetzt bekomm ich:

            <h1>Bad Message 400</h1><pre>reason: Illegal character SPACE=' '</pre>

            Kommentar


              #7
              puh ... die Server-Applikation zeigt nicht welches Zeichen (in Form von Hex-Code) illegal ist; Leerzeichen wäre z.B: 0x20.

              Also gehen wir aus, dass irgendwo ein Leerzeichen oder ein nicht-druckbares Zeichen (z.B. Tab, ...) versteckt ist. Auf deinem Screenshot sehe ich das Problem nicht.

              Jedoch ein paar Tipps, da du besser nachprüfen kannst:
              * Nach Header-Name darf nur ein einziger Leerzeichen vorkommen
              * Zwischen "GET" URL und "HTTP/1.1" darf auch nur ein einziger Leerzeichen vorkommen
              * Nach Bearer darf auch nur ein einziger Leerzeichen vorkommen
              * Vorne und Hinten darf kein Leerzeichen vorkommen (also nicht: " Connection: keep-alive", oder "Connection: keep-alive ")
              * Prüf auch ob zw. Accept-Encoding ein nicht-druckbares zeichen beinhaltet (Tipp: Lösch das Zeichen und füge ein Leerzeichen dazu)
              * Schau auch ob bei Bearer Token nicht irgendwo ein Copy&Paste Fehler vorliegt (z.B. mit Zeilenvorschub). Im Token ist Leerzeichen nicht erlaubt

              Wenn das nicht klappt, dann schau mal mit Wireshark was genau geschickt wird. Da siehst du das Problem eher, weil Wireshark die Daten in Hex-Daten ausgibt und ggf. dir sagt WO genau das Problem ist. Mit Wireshark könntest du deine HS-Anfrage mit Anfrage von Postman vergleichen

              Kommentar


                #8
                Als erstes würde ich die Anzahl der header minimieren, also im Postman die header der Reihe nach entfernen und wieder testen. Dann nur die benötigten header im HS auch senden. User-Agent wird deinen SMA zB. ziemlich sicher nicht interessieren.

                Und im Postman gibts direkt unter den buttons "Send" bzw. "Save" den etwas unscheinbaren, aber sehr hilfreichen button "Code". Dann links "HTTP" als language auswählen und du bekommst direkt die Zeilen, die du im HS verwenden kannst (ich habe keinen HS, aber das schaut mir alles sehr stark danach aus, dass der Datenblock im HS eben die HTTP lines sind).

                Zitat von BadSmiley Beitrag anzeigen
                Bist du dir sicher, das der Token immer gleich ist? Evtl ändert sich der Token, wenn er von einem anderen Browser oder IP angefragt wird? Ist das evtl. nur ein Session Token? Ist aber nur wild von Jemanden ohne Ahnung geraten.
                Für jemanden ohne Ahnung ist das gut geraten :-) In einem bearer token ist ein Ablaufdatum mit rein codiert. Der Sinn ist eben der, dass ein abgefangener token nicht viel bringt, weil er nicht lange gültig ist. Du musst also schon etwas Glück haben bzw. auf das Unvermögen der SMA Programmierer hoffen, dass dein token eine sehr lange oder vielleicht sogar unbegrenzte Gültigkeit hat. Ein abgelaufener bzw. generell ungültiger token würde sich übrigens durch einen HTTP Status 401 ("Unauthorized") oder 403 ("Forbidden") bemerkbar machen.

                Kommentar


                  #9
                  Bad Message heißt du versuchst http auf dem https.
                  Nils

                  aktuelle Bausteine:
                  BusAufsicht - ServiceCheck - Pushover - HS-Insight

                  Kommentar

                  Lädt...
                  X