Плохое взаимодействие между Zope2 XML-RPC и AT Image Mutator? - PullRequest
2 голосов
/ 18 октября 2011

Я создаю демо для mr.migrator и столкнулся с досадной проблемой, , показанной здесь :

# 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]

Этот код должен заполнятьполе изображения с данными из изображения, но вместо этого оно не соответствует:

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

Хуже, это все, что говорит Zope2.Я не вижу никаких трассировок или чего-либо еще, что указывает на проблему при запуске Plone на переднем плане.

Каков мой следующий шаг?Вы можете проверить и воспроизвести это здесь:

Я бы сделал это "обычным" способом, с ключевыми словами, передаваемыми в invokeFactory, но XML-RPC их не поддерживает .

1 Ответ

2 голосов
/ 18 октября 2011

Скорее всего, это ошибка специального символа.Протокол xml-rpc может использовать любой символ, который позволяет использовать XML.Вам следует попробовать обернуть данные изображения в двоичную оболочку:

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

Дополнительная информация:

...