Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Probleme mit der JSON RPC API - Immer code -32600

    Scheduled Pinned Locked Moved Entwicklung
    11 Posts 3 Posters 864 Views 1 Watching
    Loading More Posts
    • 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.
    • LFischerL Offline
      LFischer @Pippo
      last edited by

      Hallo @Pippo

      ein valider JSON RPC Request hat ein paar Voraussetzungen, unter anderem:

      • Es muss sich um einen POST Request handeln
      • Der "Content-Type" muss "application/json" lauten
      • Bei den übergebenen Daten muss es sich um valides JSON handeln (das muss im Request Body stehen)

      In unserem PHP API Client (siehe hier: https://packagist.org/packages/idoit/apiclient#dev-main ) kannst du dir die Header Daten ausgeben lassen. Diese lauten bei mir z.B.

      POST /idoit/src/jsonrpc.php HTTP/1.1
      Host: localhost
      User-Agent: idoit/apiclient 0.11-dev
      Accept: */*
      Accept-Encoding: application/json
      Content-Type: application/json
      X-RPC-Auth-Username: admin
      X-RPC-Auth-Password: admin
      Content-Length: 90
      

      (X-RPC-Auth-* Header sind nur notwendig, wenn man sich mit einem User anmelden möchte)

      Viele Grüße
      Leo

      P 1 Reply Last reply Reply Quote 3
      • P Offline
        Pippo @LFischer
        last edited by Pippo

        @LFischer

        Hallo Leo,

        Danke dir für deine Antwort.

        Deine genannten Punkte sollten alle erfüllt sein:

        • Request-Methode ist POST
        • Content-Type ist ebenfalls "application/json"
        • Der Body den ich oben gepostet habe kommt aus eurer Dokumentation, ich habe ihn aber zur Sicherheit ebenfalls noch validiert und er scheint so korrekt. Deswegen auch meine Fragezeichen bezüglich der Fehlermeldung.

        Dein Header-Beispiel hilft hier aber sicher schonmal weiter, ich versuche mal unsere Headers entsprechend anzupassen.

        Viele Grüsse,
        Pippo

        EDIT: Habe es gerade nochmal versucht und mit den Headers rumgespielt, gleiches Ergebnis 😞

        Aufgefallen ist mir noch dass gemäß der Spezifikation nicht "version" sondern "jsonrpc" im Request zwingend notwendig sein soll - aber auch mit dieser Anpassungen stecke ich nach wie vor fest.

        1 Reply Last reply Reply Quote 1
        • P Offline
          Pippo
          last edited by

          Bump 🙂

          Für ein paar gute Tipps / Referenzen bzgl. Troubleshooten wäre ich sehr dankbar!

          Danke und Gruss,
          Pippo

          LFischerL 1 Reply Last reply Reply Quote 1
          • LFischerL Offline
            LFischer @Pippo
            last edited by

            Hey @Pippo

            ich habe noch mal im Code nachgesehen - die Meldung "Provided request is not a valid json rpc" wird nur in zwei Situationen ausgegeben:

            • Wenn der übergebene Request kein "valides" JSON beinhaltet bzw. nicht aus dem Request-Body heraus dekodiert werden konnte (siehe JSON lint)
            • Wenn das dekodierte JSON kein Array ist

            Ich denke den zweiten Fall können wir ausschließen, denn dein gegebener Payload ist sowohl valides JSON als auch ein Array. Es kann also eigentlich nur noch der Fall sein, das dieses nicht als Request Body übergeben wird 🤔

            Hast du mal im i-doit den API Log auf "debug" geschaltet und nach dem Request geschaut was im {i-doit}/log Verzeichnis geschrieben wird?

            Viele Grüße
            Leo

            1 Reply Last reply Reply Quote 2
            • N Offline
              n0v0s
              last edited by

              Hallo Pippo,

              ich habe das gleiche Problem :
              [E] Error code: -32600 message: Invalid request : This is not a JSON-RPC. The content-type should be application/json, request method should be "post" and the http body should be a valid json-rpc 2.0 package.

              Leider wird kein Logfile geschrieben.

              Hast Du mittlerweile eine Lösung gefunden?

              Gruß
              Norbert

              P 1 Reply Last reply Reply Quote 1
              • P Offline
                Pippo @n0v0s
                last edited by

                @n0v0s

                Hallo Norbert,

                Bin leider auch noch nicht viel weiter gekommen da ich mir erst den Zugriff auf unsere i-doit Umgebung organisieren muss. Dass meine Requests gegenüber der Demo-Umgebung von i-doit ebenfalls mit der gleichen Fehlermeldung abgelehnt werden und bei dir kein Log geschrieben wird, stimmt mich aber nicht zuversichtlich wieviel ich da rausholen werden kann 😕

                Schlimmstenfalls muss ich kurz was lokales hochfahren und dagegen testen, für das fehlt mir aber im Moment die Zeit. Falls du noch was rausfindest bin ich ganz Ohr!

                Gruss,
                Pippo

                1 Reply Last reply Reply Quote 1
                • LFischerL Offline
                  LFischer
                  last edited by

                  Hallo zusammen,

                  ich habe noch eine Frage - wie genau schickt ihr eure Requests ab? Wenn man die Requests z.B. über die Konsole (via curl) abschickt kann es sein das die " verloren gehen, sodass aus:

                  {"jsonrpc":"2.0","method":"cmdb.object.create","params":{"type":"C__OBJTYPE__SERVER","title":"My little server","apikey":"api-key"},"id":1}
                  

                  Sowas wird wie:

                  {jsonrpc:2.0,method:cmdb.object.create,params:{type:C__OBJTYPE__SERVER,title:My little server,apikey:api-key},id:1}
                  

                  Und das endet in einer "Syntax error, malformed JSON" Fehlermeldung, die dann wiederum vom System abgefangen und durch "Invalid request : Provided request is not a valid json rpc." ersetzt wird.

                  Habt ihr andere Tools ausprobiert wie z.B. https://www.postman.com/ ?

                  VG Leo

                  P 1 Reply Last reply Reply Quote 0
                  • P Offline
                    Pippo @LFischer
                    last edited by Pippo

                    @LFischer

                    Hallo Leo,

                    Kleines Update von mir: Ursprünglich hatte ich es mit Postman versucht und bin da nicht weitergekommen. Mittlerweile evaluieren wir Alternativen und bin dabei auf Bruno gestossen und siehe da, jetzt funktionierts... sowohl bei eurer Demo-Umgebung als auch bei unserer On-Prem Version.

                    Ich kann mir aber immer noch nicht erklären woran es gelegen ist, vielleicht bist du aber mit deinem Verdacht schon ziemlich nahe. Ich weiss nicht wie Postman das Ganze handelt und ob es dort mit dem Encoding Probleme geben kann. Ich bin mir aber auch ziemlich sicher dass ichs über cURL ebenfalls versucht hatte und die gleiche Fehlermeldung bekommen hatte - vielleicht benutzt Postman(Desktop) cURL im Hintergrund und hat die Zeichen weggestrippt? 🤷

                    Mit Bruno scheint es jetzt bei uns zu laufen - Holz anfassen!

                    Aber vielen Dank fürs weitere Nachforschen!

                    @n0v0s
                    Vielleicht kannst du ja was mit dieser Info anfangen.

                    LFischerL 1 Reply Last reply Reply Quote 0
                    • LFischerL Offline
                      LFischer @Pippo
                      last edited by

                      Hey @Pippo

                      alles klar - merkwürdig... Aber vielleicht ist es tatsächlich so? Ich habe für die nächste API Version eine kleine Änderung vorgesehen, die dann etwas genauer erklärt was nicht stimmt 🙂 Das sollte dann helfen!

                      VG Leo

                      P 1 Reply Last reply Reply Quote 1
                      • P Offline
                        Pippo @LFischer
                        last edited by

                        @LFischer

                        Super Sache, genauere Fehlermeldungen sind natürlich immer gerne gesehen!

                        Danke nochmals fürs Helfen.

                        Grüsse,
                        Pippo

                        1 Reply Last reply Reply Quote 0
                        • MartinVM MartinV referenced this topic on
                        • First post
                          Last post