Announcement

Collapse
No announcement yet.

PUT-Request über die HTTP-API: "400 invalid json object"

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • PUT-Request über die HTTP-API: "400 invalid json object"

    Hallo OX-Team,

    wir nutzen den OX6 und möchten gerne die HTTP-API als Schnittstelle zu unserem Asterisk nutzen. Eine Authentifizierung via API mit Setzen des Cookies klappt. GET-Requests sind auch kein Problem, es ist die PUT-Methode, die mir zu schaffen macht.

    Mit folgendem PUT-Request versuche ich über PHP eine Antwort zu bekommen:
    $putData = '[{"pattern":"F"}]';
    $client->put('/ajax/contacts?action=search&columns=20,1,5&session='.$j sonData['session'], $putData);

    Die Syntax geht für mich aus der Doku leider nicht eindeutig hervor. Ein Beispiel hätte mir sicher geholfen (kleiner konstruktiver Hinweis).

    Als Antwort bekomme ich dann folgenden Header...
    - date = Thu, 30 Apr 2009 08:12:04 GMT
    - server = Apache/2.2.3 (Univention) mod_jk/1.2.18 PHP/5.2.0-8+.78.200809291755 mod_ssl/2.2.3 OpenSSL/0.9.8c
    - content-length = 293
    - expires = Sat, 06 May 1995 12:00:00 GMT
    - pragma = no-cache
    - cache-control = no-store, no-cache, must-revalidate,post-check=0, pre-check=0
    - connection = close
    - content-type = text/javascript; charset=UTF-8

    und folgenden Content (als HTML):
    <!DOCTYPE HTML PUBLIC -//IETF//DTD HTML 2.0//EN>
    <html><head>
    <title>400 invalid json object</title>
    </head><body>
    <h1>400 invalid json object</h1>
    <p>[no description available]</p>
    <hr>
    <address>Thu, 30 April 2009 08:12:04 GMT, Open-Xchange v6.6.0-6620</address>
    </body></html>{}

    Leider ist die Fehlermeldung wenig aussagekräftig. Und die
    Klammer nach dem schließenden HTML-Tag macht mich
    stutzig. Was mache ich falsch?

    Grüße aus Bochum
    HF Mettge

  • #2
    Die eckigen Klammern in putData müssen Weg. Es ist ein Objekt, kein Array von Objekten.

    Comment


    • #3
      Auch ohne eckige Klammern gleiche Fehlermeldung

      Vielen Dank für die Antwort.

      Leider half sie nicht. Ich habe schon einige verschiedene Versionen ausprobiert (mit und ohne eckigen oder geschweiften Klammern, mit verschiedenen Datensätze).

      Bei den GET-Requests habe ich keine Probleme, nur bei diesem PUT-Request. Fehlt vielleicht etwas in der Syntax? Vielleicht hilft ja ein konkretes Beispiel eurerseits.

      MfG
      HF Mettge

      Comment


      • #4
        Welcher Content-Type wird im PUT angegeben?

        Konkrete Beispiele gibt's genug wenn man Firebug installiert und beim Arbeiten mit dem Web-Frontend auf die Firebug-Konsole schaut.

        Comment


        • #5
          Das Semikolon am Ende des Cookie-Strings ist das Übel

          Hallo nochmal,

          einige Stunden des Debuggings später, habe ich die Leiche im Keller gefunden. Ich benutze nun als HTTP-Client das Zend Framework, vorher eine andere HTTP-Client-Klasse, und musste feststellen, dass beide beim Setzen der Cookies auch am Ende ein Semikolon setzen.

          Ich habe keine Ahnung, warum, aber damit kommt die API nicht klar. Das heißt, entweder muss es an der API liegen oder an mehreren HTTP-Clients für PHP inklusive des Zend Frameworks. Ich weiß es wirklich nicht.

          Das Skript läuft jetzt. Andere Fragen in einem anderen Thread.

          Für andere (bitte nicht vergesssen):
          - Nach Login open-xchange-session-Cookie setzen
          - Dabei den ", path=/" rausparsen
          - Am Ende des Cookie-Strings darf kein ";" stehen

          Grüße aus Bochum
          HF Mettge

          Comment

          Working...
          X