0

我正在尝试向仅接受 XML 的 API 发送请求。我曾经elementtree.SimpleXMLWriter构建 XML 树并将其存储在 StringIO 对象中。这一切都很好,花花公子。

问题是我必须对 StringIO 对象进行 urlencode 才能将其发送到 API。但是当我尝试时,我得到:

  File "C:\Python27\lib\urllib.py", line 1279, in urlencode
    if len(query) and not isinstance(query[0], tuple):
AttributeError: StringIO instance has no attribute '__len__'

显然,这已作为Python 的一个问题进行了讨论。我只是想知道是否有任何其他内置函数用于对字符串进行 urlencoding,特别是那些不需要调用len()以便我可以对这个 StringIO 对象进行编码的函数。

谢谢!

PS:如果这是一个更简单的解决方案,我愿意使用 StringIO 以外的东西来存储 XML 对象。我只需要某种“文件SimpleXMLWriter来存储 XML。

4

2 回答 2

2

您可以通过调用 StringIO 的 getvalue() 方法从 StringIO 获取字符串,并将其传递给 urllib。

于 2011-12-21T21:17:34.127 回答
2

StringIOinstance 就像一个文件,而不是一个字符串。它没有len(). 用于my_string_io_varaible.getvalue()获取字符串值,并将其传递给urlencode()期望字符串。

也许您可以将urlencodeURL 嵌入到 XML 中,而不是整个过程。

于 2011-12-21T21:17:53.233 回答