名前xmlrpc
が示すように、この転送プロトコルはデータの伝送に依存しXML
ており、バイナリデータや印刷不可能なASCII文字(\ n、\ b、chr(2)、...)を転送することはできません[またはできますか?]。
コーディングへの影響を最小限に抑えて(つまり、クライアント側でのみ)文字列をクライアントからサーバーに安全に転送する方法があるかどうかを知りたいです。クラスを試しましたxmlrpclib.Binary
が、これはファイルでのみ機能するようです。
テストコード、server.py:
def output(text):
print "-".join([str(ord(x)) for x in text])
from SimpleXMLRPCServer import SimpleXMLRPCServer
server = SimpleXMLRPCServer(('localhost', 1234))
server.register_function(output)
server.serve_forever()
client.py:
import xmlrpclib
device = xmlrpclib.ServerProxy("http://localhost:1234/RPC2")
device.output(".\n."+chr(2))
期待される結果:
46-10-46-2
見られる結果(サーバー側):
xmlrpclib.Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 7, column 1">