Schwierigkeiten mit RPCXML-Schnittstelle und PHP

  • Hallo,


    ich bin derzeit dabei, den Chat per XMLRPC-Schnittstelle fernzusteuern. Neue Benutzer in einen vorhandenen Chat schicken, Nachrichten schreiben etc. funktioniert schon alles.


    Ich habe jedoch Schwierigkeiten, einen Chat zu erstellen. Und zwar rufe ich dafür die Funktion RpcChats.New auf, die allerdings ziemlich viele Parameter übergeben bekommen will, die ich teilweise nicht verstehe.


    Der erste Parameter ist ein Struct vom Typ RpcChat, welches wiederum als ersten Parameter einen ID will. Was für eine ID übergebe ich denn da? Die weiteren Werte machen es auch nicht einfacher, da innerhalb der structs andere structs drin sind, die wiederum andere structs enthalten.


    Wenn ich die ganzen Variablen definiere, verschachtel ich Arrays so sehr ineinander, dass ich kaum noch weiss, was was ist. Außerdem ergeben viele Variablen beim Erstellen eines Chats nicht wirklich einen Sinn, da ich ja z.B. noch keine ID habe oder noch nicht die Variable "MessageCount" füllen kann.


    Es wäre nett, wenn jemand ein Beispiel hat, wie man z.B. einen Chat eröffnet - eventuell bin ich ja auch total auf dem Holzweg.


    Gruß,
    Joscha

  • Hallo,


    ein Trick mit dem ich mir bei den ersten Gehversuchen mit der API beholfen habe ist, Wireshark zu installieren. Das protokolliert Netzwerknachrichten mit. Ich habe dann den Greyhound-Client gestartet, das Protokoll auf XML-RPC umgestellt und mich mit dem Server verbunden. Dann hatte ich im Wireshark glaube ich noch für HTTP-Nachrichten den Port vom Greyhound hinzugefügt, und dann mitgelauscht was der Greyhound-Client so rausschickt und zurückbekommt. Da sieht man dann teilweise z.B. ob man nen Struct vergessen hat oder so.


    Das ist zugegebenermaßen ein Sprung in kaltes Wasser, aber man könnte damit z.B. zumindest sehen, was der Greyhound-Client denn so beim Aufrufen eines neuen Chat an den Server schickt 8)


    Grüße,
    Robert

  • Hallo,


    freut mich, dass es geklappt hat. In der GREYHOUND Implementation von XML-RPC und JSON-RPC können bei Strukturen Werte, welche nicht benötigt werden, einfach weggelassen werden. Sie werden beim erstellen eines Chats wie in diesem Beispiel nicht verwenden. Damit ein Chat immer gleich dargestellt wird, gibt es nur ein Objekt für die Meta-Daten des Chats. Sie benötigen als nur den Namen und die Benutzer des Chats. Wird ein Wert weggelassen, wir bei Strings ein leerer String angenommen, bei Zahlen eine 0 und bei Boolschen Werten False. Wenn Sie also Werte nicht brauchen oder diese nicht zur Verfügung stehen gilt die Fausregel, diese Werte einfach garnicht zu übermitteln. Das spart auch Bandbreite, weil die Metainformationen nicht übertragen werden müssen.


    Direkte Funktionsparameter müssen allerdings immer übergeben werden. Wenn ein Funktionsparameter eine Struktur ist, könnte diese Struktur aber komplett leer sein. Dann sind die Vorgaben des Protokolls erfüllt. Wenn GREYHOUND bestimmte Werte vorraussetzt, wird er über diesen Umstand informieren.


    Falls noch Probleme bestehen, stehen wir jederzeit für Rückfragen zur Verfügung. :)


    Ich freue mich schon über die erste Applikation für GREYHOUND, die nicht direkt von den gurus kommt. :)