Joachim Schmitz wrote: > > > --On Mittwoch, Mai 29, 2002 16:15:44 +0100 Toby Dickenson > <[EMAIL PROTECTED]> wrote: > >> On Wednesday 29 May 2002 3:24 pm, Joachim Schmitz wrote: >> >>> Hi, >>> >>> I want to acces a ZCatalog via xmlrpc, but >>> >>> server=xmlrpclib.Server("http://myserver.aixtraware.de" >>> ,BasicAuthTransport(username="user",password="pw >>> ")) >>> r = server.Catalog() >>> >>> results in >>> >>> <Fault -1: "Unexpected Zope exception: cannot marshal <type >>> 'IOBTreeItems'> objects"> >>> >>> What is to do, to enable marshalling of those types ?
XML-RPC only has a limited set of types it can marshal and that can't be changed without breaking the standard. The alternative would be sending Python pickles encoded as XML-RPC binary over the wire. >> >> >> You could hack xmlrpclib to marshall those object, but I dont recommend >> it. Those objects can be big (but lazily evaluated), and you would be >> opening a significant denial of service vulnerability in your server. > > But it also can be very interesting for exporting data from a Zope site, > to be used in other applications. > >> >> I suggest you create a method (Python Script?) that makes the catalog >> query, sanitizes the response by making sure it is not too big, and >> returns a vanilla list or dictionary > > I wrote a little pythonscript to export data from a ZPatterns Rack, > where the data is stored in a propertysheet: > > res=context.Catalog() > > t=[] > for m in sequence.sort(res,(('reg_id','cmp','desc'),)): > r=m.propertysheets.Basic.propertyItems() > t.append(r) > return t > > This runs fine, when I test the script. But when I access it with > xmlrpc, I get: > > <Fault -1: "Unexpected Zope exception: cannot marshal <type 'None'> > objects"> > > I changed Zope xmlrpclib.py and added to the Marshaller class: > > def dump_None(self, value): > self.write("<value><string>None</string></value>\n") > dispatch[NoneType] = dump_None > > Now that works, but I think the xmlrpclib.py, should be able to marshall > the "None" type. None doesn't have an equivalent type in XML-RPC. -- Marc-Andre Lemburg CEO eGenix.com Software GmbH ______________________________________________________________________ Company & Consulting: http://www.egenix.com/ Python Software: http://www.egenix.com/files/python/ Meet us at EuroPython 2002: http://www.europython.org/ _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )