正如其名称所暗示xmlrpc
,该传送协议依赖于XML
携带数据,而不能传输二进制数据,或不可打印的ASCII字符(\ N,\ B,CHR(2),...)或可以它?]。如何通过xmlrpc(python)传输二进制数据?
我想知道是否有从客户端上的编码影响最小(即仅在客户端)能够安全地传递一个字符串到服务器的方式。我尝试了xmlrpclib.Binary
类,但这似乎只适用于文件。
Testcode,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">
,做你会得到什么结果? –
@Ned:查看更新后的问题。由于'chr(2)'字符,我得到错误。 – Alex