XML-RPC

XML-RPC ist eine Definition zum Aufruf von Methoden und Funktionen durch entfernte Systeme.

Zope unterstützt XML-RPC für jedes traversierbare Objekt, z.B.:

target = 'http://localhost:8080/plone'
path = xmlrpclib.ServerProxy(target).getPhysicalPath()

Authentifizierung

Eine einfache Möglichkeit, einen Nutzer für XML-RPC zu authentifizieren, ist das Einbinden von HTTP Basic Auth in eine URL:

target = 'http://admin:secret@localhost:8080/plone'
path = xmlrpclib.ServerProxy(target).getPhysicalPath()

Marshalling

XML-RPC kann Objekte nicht zuverlässig an andere Aufrufe übergeben. Um an das entfernte Objekt zu gelangen, kann ZPublisher.Client.Object verwendet werden.

Sehen Sie auch Zope2.utilities.load_site

Web Services API for Plone (wsapi4plone)

wsapi4plone.core stellt zusätzliche Methoden für Zopes XML-PRC-Api zur Verfügung. This is an add-on product exposes more methods available through Zope's XML-RPC api.

Im Folgenden ein Beispiel, wie aus einem pictures-Ordner ein Bild mit der ID portrait.jpg in einen Ordner portraits geladen und in veit.jpg umbenannt wird:

import os
from xmlrpclib import ServerProxy
from xmlrpclib import Binary

client = ServerProxy("http://admin:secret@localhost:8080/plone")
data = open(os.path.join('pictures', 'portrait.jpg')).read()
myimage = {'portraits/veit.jpg': [{'title': 'a Portrait of Veit', 'image':Binary(data)},'Image']}
output = client.get_object(client.post_object(myimage))

Anmerkung: transmogrify.ploneremote nutzt XML-RPC um Inhalte in eine Plone-Site zu importieren.

Zum Weiterlesen