Aheu,
ich versuche mich aktuell an der XML-RPC Schnittstelle. Das Beispiel aus der Doku habe ich soweit anpassen können, dass erfolgreich eine neue Aufgabe erstellt wird. Nun sollen da aber auch noch direkt ein paar benutzerdefinierte Felder befüllt werden. Anhand eines anderen Beitrags hier im Forum habe ich dazu zumindest einen Ansatz. Leider erhalte ich aber eine Fehlermeldung aus der RPC-Bibliothek
ZitatNotice: Undefined offset: 0 in ..\lib\xmlrpc.inc on line 3017
Fatal error: Call to a member function serialize() on a non-object in ..\lib\xmlrpc.inc on line 3017
Hier mein Code:
PHP
- <?php
- /*****************************************************************************************/
- /* Dies ist ein Beispiel für die Interaktion zwischen GREYHOUND und PHP mittels XML-RPC. */
- /* Sie können dieses Beispiel verändern und in eigenen Skripten frei verwenden. */
- /*****************************************************************************************/
- define('GREYHOUND_HOST', '***'); // Der Hostname oder die IP-Adresse Ihres GREYHOUND
- define('GREYHOUND_PORT', 80); // Der Port des HTTP-Servers
- define('GREYHOUND_USER', '***'); // Der Name des Benutzers mit entsprechenden Rechten
- define('GREYHOUND_PASS', '***'); // Das Passwort des Benutzers
- define('GREYHOUND_SSL', false); // Ist GREYHOUND für die Verwendung von SSL konfiguriert?
- define('GREYHOUND_TIMEOUT', 10); // Maximale Wartezeit in Sekunden
- // Bindet die XML-RPC for PHP Bibliothek ein:
- include_once(dirname(__FILE__) . '/lib/xmlrpc.inc');
- // Generiert eine Unique-ID, wie unter HTTP-Protokolle beschrieben:
- $uniqueid = md5('XML-RPC for PHP' . microtime() . '-' . rand(1, 99999999));
- // Bereitet das XML-RPC for PHP Objekt für eine Verbindung zu GREYHOUND vor:
- $xmlrpc = new xmlrpc_client(
- (GREYHOUND_SSL ? 'https' : 'http') . '://' .
- $uniqueid . '-' . GREYHOUND_USER . ':' .
- GREYHOUND_PASS . '@' .
- GREYHOUND_HOST . ':' .
- GREYHOUND_PORT . '/xmlrpc/'
- );
- if(GREYHOUND_SSL)
- {
- $xmlrpc->setSSLVerifyHost(0); // Deaktiviert die Zertifikatsprüfung
- $xmlrpc->setSSLVerifyPeer(0); // für selbst erstellte Zertifikate.
- }
- // Nun wird die Anfrage erzeugt. Die Anfrage soll alle Elemente Abrufen, welche keinen
- // Bearbeiter haben und vom Typ E-Mail, Telefax, Brief, Kurzmitteilung oder Telefongespräch
- // sind. Die möglichen Parameter dieser Funktion, werden in RpcItems.GetList beschrieben.
- // Nun wird der gewünschte RpcItemFilter erzeugt:
- $RpcDetailedItem = new xmlrpcval(
- array(
- 'Kind' => new xmlrpcval(6, 'i4'),
- 'Subject' => new xmlrpcval("Test"),
- 'GroupRef' => new xmlrpcval(9,'i4'),
- 'State' => new xmlrpcval(1, 'i4'),
- 'Flags' => new xmlrpcval(0, 'i4'),
- 'Priority' => new xmlrpcval(2, 'i4'),
- 'UserFields' => new xmlrpcval(
- array(
- 'DataType' => new xmlrpcval(0, 'i4'),
- 'FieldRef' => new xmlrpcval(5, 'i4'),
- 'Value' => new xmlrpcval("Test")
- ),
- 'array'
- )
- ),
- 'struct'
- );
- // Nun wird die Anfrage an den GREYHOUND Server gesendet:
- $response = $xmlrpc->send(
- new xmlrpcmsg(
- "RpcItems.New",
- array(
- $RpcDetailedItem,
- new xmlrpcval(false, 'i4')
- )
- ),
- GREYHOUND_TIMEOUT
- );
- // Wenn kein Fehler aufgetreten ist, wird das Ergebnis nun einfach ausgegeben.
- if($response->faultCode() == 0)
- {
- // Die Funktion php_xmlrpc_decode vereinfacht die Arbeit mit dem Ergebnis,
- // entfernt aber Informationen über den Datentyp. Sie können auch direkt mit
- // $response->value() arbeiten. Eventuell ist die Auswertung des Ergebnisses
- // dann aber etwas komplizierter. Schauen Sie hierfür bitte in die Dokumentation
- // der XML-RPC for PHP Bibliothek
- echo '<pre>';
- print_r(php_xmlrpc_decode($response->value()));
- echo '</pre>';
- }
- else
- echo 'Es ist ein Fehler aufgetreten: ' . $response->faultString();
- ?>
Werfe ich den Teil
raus, dann wird die Aufgabe erstellt.
Viele Grüße,
Kalle