Плохое взаимодействие между Zope2 XML-RPC и At Image Mutator?
-
22-10-2019 - |
Вопрос
Я создаю Демонстрация для мистера Мигратора и прибег к раздражающей проблеме, Продемонстрировано здесь:
# 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 их не поддерживает.
Решение
Это, скорее всего, особая ошибка символа. Протокол XML-RPC может использовать любой символ XML, который позволяет использовать. Вы должны попытаться обернуть данные изображения в бинарную обертку:
wrappedData = xmlrpclib.Binary(open('screenshot.png').read())
Больше информации: