Pregunta

Estoy creando un demostración para el Sr. Migrator y he corrido a un problema molesto, exhibido aquí:

# create image
proxy = xmlrpclib.ServerProxy(url) # reset
data = open('screenshot.png').read()
try:
    proxy.invokeFactory('Image', 'screenshot.png')
except xmlrpclib.ProtocolError:
    print sys.exc_info()[1]
except xmlrpclib.Fault:
    print "The id is invalid - it is already in use." # most likely
proxy = xmlrpclib.ServerProxy(url + '/screenshot.png')
proxy.setTitle('This is an image')
try:
    proxy.setImage(data) # XXX this fails
except:
    print sys.exc_info()[1]

Este código debe completar el campo de imagen con datos de la imagen, pero en su lugar falla consistentemente con:

<ProtocolError for admin:admin@localhost:8080/Plone/screenshot.png: 500 Internal Server Error>

Peor aún, todo esto dice Zope2. No veo ningún rastreo ni nada más que indique un problema al ejecutar el plonte en primer plano.

¿Cuál es mi próximo paso? Puedes ver y reproducir esto aquí:

Haría esto de la manera "normal", con argumentos de palabras clave pasadas a InvokeFactory, pero XML-RPC no los admite.

¿Fue útil?

Solución

Es muy probable que sea un error de personaje especial. El protocolo XML-RPC puede usar cualquier personaje que XML le permita usar. Debe intentar envolver los datos de la imagen en una envoltura binaria:

wrappedData = xmlrpclib.Binary(open('screenshot.png').read())

Más información:

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top