私はebay sdkをpython3に移植していますが、次の問題が発生しました。Pycurlとio.StringIO - pycurl.error:(23、 '本文の作成に失敗しました)
私はいくつかのHTTPリクエストを送信するためにpycurlを使用しています。ここ は、私はそれを設定する方法である:
self._curl = pycurl.Curl()
self._curl.setopt(pycurl.FOLLOWLOCATION, 1)
self._curl.setopt(pycurl.URL, str(request_url))
self._curl.setopt(pycurl.SSL_VERIFYPEER, 0)
self._response_header = io.StringIO()
self._response_body = io.StringIO()
self._curl.setopt(pycurl.CONNECTTIMEOUT, self.timeout)
self._curl.setopt(pycurl.TIMEOUT, self.timeout)
self._curl.setopt(pycurl.HEADERFUNCTION, self._response_header.write)
self._curl.setopt(pycurl.WRITEFUNCTION, self._response_body.write)
私は()self._curl.performを呼び出すと、私は次のエラーを取得:私の知る限り、これは問題があることを意味知っているように
pycurl.error: (23, 'Failed writing body (1457 != 1460)')
を書き込み機能では、私は正確に何かを把握することはできません。 StringIOモジュールからioへの移行に関連する可能性がありますが、わかりません。
UPD:
def body(buf):
self._response_body.write(buf)
def header(buf):
self._response_header.write(buf)
self._curl.setopt(pycurl.HEADERFUNCTION, header)
self._curl.setopt(pycurl.WRITEFUNCTION, body)
、それが動作します: 私は次のことを試してみました。私はラムダを使って同じトリックをしようとしましたが、それは機能しませんでした。
http://pycurl.sourceforge.net/doc/unicode.html#writing-to-stringio-bytesio –