Python xmlrpc не удалось маршалировать ascii <= 0x1f - PullRequest
0 голосов
/ 26 декабря 2018

Я нашел проблему в python 3.6.6 xmlrpc.Если я передам строку, содержащую управляющие символы, например '\ x1f', xmlrpc.client не сможет правильно ее упорядочить.Это ошибка или просто ограничение на строковый параметр?

with xmlrpc.client.ServerProxy(uri, verbose=True) as proxy:
    ret = proxy.func('\x1f')

send: b"<?xml version='1.0'?>\n<methodCall>\n<methodName>func</methodName>\n<params>\n<param>\n<value><string>\x1f</string></value>\n</param>\n</params>\n</methodCall>\n"
reply: 'HTTP/1.0 200 OK\r\n'
header: Server header: Date header: Content-type header: Content-length body: b"<?xml version='1.0'?>\n<methodResponse>\n<fault>\n<value><struct>\n<member>\n<name>faultCode</name>\n<value><int>1</int></value>\n</member>\n<member>\n<name>faultString</name>\n<value><string>&lt;class 'xml.parsers.expat.ExpatError'&gt;:not well-formed (invalid token): line 6, column 15</string></value>\n</member>\n</struct></value>\n</fault>\n</methodResponse>\n"

File "/usr/lib64/python3.6/xmlrpc/client.py", line 1112, in __call__
    return self.__send(self.__name, args)
File "/usr/lib64/python3.6/xmlrpc/client.py", line 1452, in __request
    verbose=self.__verbose
File "/usr/lib64/python3.6/xmlrpc/client.py", line 1154, in request
    return self.single_request(host, handler, request_body, verbose)
File "/usr/lib64/python3.6/xmlrpc/client.py", line 1170, in single_request
    return self.parse_response(resp)
File "/usr/lib64/python3.6/xmlrpc/client.py", line 1342, in parse_response
    return u.close()
File "/usr/lib64/python3.6/xmlrpc/client.py", line 656, in close
    raise Fault(**self._stack[0])
xmlrpc.client.Fault: <Fault 1: "<class 'xml.parsers.expat.ExpatError'>:not well-formed (invalid token): line 6, column 15">
...