homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author Nathan Williams
Recipients Nathan Williams
Date 2016年04月28日.01:49:21
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1461808162.86.0.277160090083.issue26873@psf.upfronthosting.co.za>
In-reply-to
Content
I am using xmlrpclib against an internal xmlrpc server.
One of the responses returns integer values, and it raises an exception in "_stringify"
The code for _stringify is (xmlrpclib.py:180 in python2.7):
if unicode:
 def _stringify(string):
 # convert to 7-bit ascii if possible
 try:
 return string.encode("ascii")
 except UnicodeError:
 return string
else:
 def _stringify(string):
 return string
So when "unicode" is available, .encode is called on the parameter (which are the returned objects from the server) which fails for ints.
Without the unicode path it works fine, proven with the following monkey-patch:
xmlrpclib._stringify = lambda s: s
I am using the above patch as a workaround, but a fix to the library should be straightforward, simply checking for AttributeError in the except clause would solve it while retaining the existing functionality.
The traceback:
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/lib/python2.6/xmlrpclib.py", line 1199, in __call__
 return self.__send(self.__name, args)
 File "/usr/lib/python2.6/xmlrpclib.py", line 1489, in __request
 verbose=self.__verbose
 File "/usr/lib/python2.6/xmlrpclib.py", line 1253, in request
 return self._parse_response(h.getfile(), sock)
 File "/usr/lib/python2.6/xmlrpclib.py", line 1387, in _parse_response
 p.feed(response)
 File "/usr/lib/python2.6/xmlrpclib.py", line 601, in feed
 self._parser.Parse(data, 0)
 File "/usr/lib/python2.6/xmlrpclib.py", line 868, in end
 return f(self, join(self._data, ""))
 File "/usr/lib/python2.6/xmlrpclib.py", line 935, in end_struct
 dict[_stringify(items[i])] = items[i+1]
 File "/usr/lib/python2.6/xmlrpclib.py", line 176, in _stringify
 return string.encode("ascii")
AttributeError: 'int' object has no attribute 'encode'
History
Date User Action Args
2016年04月28日 01:49:22Nathan Williamssetrecipients: + Nathan Williams
2016年04月28日 01:49:22Nathan Williamssetmessageid: <1461808162.86.0.277160090083.issue26873@psf.upfronthosting.co.za>
2016年04月28日 01:49:22Nathan Williamslinkissue26873 messages
2016年04月28日 01:49:21Nathan Williamscreate

AltStyle によって変換されたページ (->オリジナル) /