Doku für XML-RPC bzw. JSON Schnittstelle?

  • Mit Freude sehe ich diesen neuen Forenbereich! :)
    Wir sind recht scharf darauf, in diesem Bereich mal erste Gehversuche zu wagen. Aber ohne Doku - oder zumindest mal Infos darüber, wie die Schnittstellen grundsätzlich angesprochen werden können und ohne eine Funktionsübersicht ist da kaum was zu machen.
    Wann können wir denn mit entsprechenden Infos - und ggf. mit einer kleinen Beispiel-App. - rechnen?

  • Hallo,


    die beim Beta Pre-Flight-Check angebotene Funktionsübersicht können wir in Form einiger XML-Dateien, welche die Parameter und Rückgabetypen beschreiben fast sofort anbieten. Eine Dokumentation mit textueller Funktionsbeschreibung wird sicherlich noch ein wenig dauern, weil wir derzeit noch extrem ausgelastet sind. Ein Beispielprogramm in Delphi macht vermutlich wenig Sinn für Sie? Im Prinzip lässt sich die Schnittstelle von jeder XML-RPC Implementation verwenden, welche die i8-Erweiterung (64-Bit Integer) kennt. Ich werde mal intern absprechen, wie schnell wir eine passenden Quick-Start Guide zur Verfügung stellen können.

  • Hallo,


    ich habe einmal probiert einen POST gemäß der Beschreibung an unseren Greyhound-Server zu schicken. Ich erhalte allerdings immer nur ein HTTP 200 OK ohne Daten als Antwort. Muss auf dem Server die XML-RPC Schnittstelle evtl. erst explizit aktiviert werden, oder ist diese immer aktiv?

  • Hallo,


    wenn das HTTP-Protokoll im GREYHOUND Admin aktiviert ist, ist das XML-RPC und JSON Protokoll ebenfalls aktiv. Nach der Installation wird XML-RPC und JSON standardmäßig aktiviert. Prüfen Sie bitte ggf. den Port. Haben Sie bei der Anfrage an den Server den Pfad /xmlrpc angegeben?


    Sie können die Funktionstüchtigkeit der XML-RPC Schnittstelle übrigens prüfen, indem Sie den GREYHOUND Client im Verbindungsdialog unter "Erweiterte Einstellungen" auf das gewünschte Protokoll umschalten. Denken Sie aber daran, das Protokoll wieder auf RPCP zu ändern, da der Client sonst ohne Rückkanal arbeitet.

  • Ich habe jetzt erfolgreich die ersten Gehversuche mit der XML-RPC-Schnittstelle (und PHP) hinter mir.
    Eine Sache ist mir dabei aufgefallen: Im XML-Dokument, das als Response zurückkommt, steht (zumindest bei unserem Server) als Character-Encoding ISO-8859-15, allerdings sind die Texte (z.B. die Subjects bei ListItems) offenbar UTF-8 codiert. Ist das eine Server-Einstellung? Wenn ich das XML als UTF-8 codiert betrachte und dann in das gewünschte Encoding (das ist in meinem Fall tatsächlich ISO-8859-15) umwandle, dann ist alles korrekt.

  • Hallo,


    eigentlich ist unmöglich, dass irgendetwas UTF-8 kodiert ist. GREYHOUND arbeitet intern mit Latin1 bzw. ISO-8859-15 Charset. Auch in der Datenbank werden die Daten entsprechend kodiert gespeichert. Haben Sie das Verhalten auch an anderen Stellen als dem Subject beobachtet?


    Freut mich übrigens zu hören, dass Sie ingesamt aber zu einem Ergebnis gekommen sind. :)

  • Hallo,


    ja, das mit dem Encoding ist tatsächlich korrekt. Greyhound schickt ISO-8859-15, wie ja auch im XML beschrieben (ich habe mir die Respone mal gedumpt und das Encoding kontrolliert). Das Problem lag wohl eher darin, dass offenbar die PHP5 DOMDocument-Klasse, mit der ich arbeite die Node-Values immer als UTF-8 liefert, egal was im Dokument als Encoding angegeben war...


    Zumindest weiß ich jetzt woran es liegt und wie ich es beheben kann ;)

  • Hallo Dennis,


    ich hatte das damals nicht mit der phpxmlrpc Bibliothek gemacht, sondern mir eine eigene XML-RPC-Bibliothek gebastelt. Ich hab aber gerade im Bugtracker von phpxmlrpc einen Eintrag gefunden wo jemand ein ähnliches Problem schildert.


    Man kann offenbar mit folgender Zeile die Zeichencodierung setzen, die phpxmlrpc verwendet:


    PHP
    1. $GLOBALS['xmlrpc_internalencoding'] = 'ISO-8859-15';



    Probiert mal, ob es funktioniert, wenn Du diese Zeile ganz am Anfang in Deinen Code einbaust.


    Wir werden übrigens in Kürze auch die offizielle GREYHOUND PHP API veröffentlichen, in der dann auch die RPC-Schnittstelle enthalten ist. Damit wird man sich dann nicht mehr mit den Details von XML-RPC befassen müssen, sondern hat dann PHP Klassen und Methoden, die die RPC-Funktionen des Servers abbilden. Mehr dazu wie gesagt in Kürze ;)


    Grüße,
    Robert