Вопрос

Я создаю Демонстрация для мистера Мигратора и прибег к раздражающей проблеме, Продемонстрировано здесь:

# 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())

Больше информации:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top