0

XML のみを受け入れる API にリクエストを送信しようとしています。私はelementtree.SimpleXMLWriterXML ツリーを構築するために使用しており、それは StringIO オブジェクトに格納されています。それはすべて元気でダンディです。

問題は、API に送信するために StringIO オブジェクトを URL コード化する必要があることです。しかし、試してみると、次のようになります。

  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 の問題として議論されているようです。len()文字列を urlencoding するための他の組み込み関数、特にこの StringIO オブジェクトをエンコードできるように呼び出す必要のない組み込み関数があるかどうか疑問に思っています。

ありがとう!

PS: XML オブジェクトを格納するために StringIO 以外のものを使用することにオープンです。それがより簡単な解決策である場合。XMLを保存するために、ある種の「ファイル」が必要です。SimpleXMLWriter

4

2 に答える 2

2

getvalue() メソッドを呼び出して StringIO から文字列を取得し、それを urllib に渡すことができます。

于 2011-12-21T21:17:34.127 に答える
2

StringIOインスタンスは文字列ではなく、ファイルのようなものです。はありませんlen()。文字列値を取得するために使用my_string_io_varaible.getvalue()し、文字列が必要な に渡しurlencode()ます。

urlencode全体ではなく、途中で URL を XML に埋め込むこともできます。

于 2011-12-21T21:17:53.233 に答える