2

私は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はそれらをサポートしていません

4

1 に答える 1

2

これは、特殊文字エラーである可能性が最も高いです。xml-rpc プロトコルでは、XML で使用できる任意の文字を使用できます。画像データを Binary ラッパーでラップするようにしてください。

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

より詳しい情報:

于 2011-10-17T23:46:14.123 に答える