Python 2.7 で Pivotal Tracker API モジュールを実装しました。Pivotal Tracker APIは、POST データが XML ドキュメントであり、「application/xml」がコンテンツ タイプであると想定しています。
私のコードは、次のように urlib/httplib を使用してドキュメントを投稿します。
request = urllib2.Request(self.url, xml_request.toxml('utf-8') if xml_request else None, self.headers)
obj = parse_xml(self.opener.open(request))
これにより、XML テキストに非 ASCII 文字が含まれている場合に例外が発生します。
File "/usr/lib/python2.7/httplib.py", line 951, in endheaders
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 809, in _send_output
msg += message_body
exceptions.UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 89: ordinal not in range(128)
私が見る限り、httplib._send_output はメッセージ ペイロード用の ASCII 文字列を作成しています。ASCII 文字のみが使用されている限り、application/xml で問題なく動作します。
ASCII 以外の文字を含むアプリケーション/xml データをポストする簡単な方法はありますか?それともフープを飛び越える必要がありますか?