3

PHP の CURL には慣れていますが、Python で pycurl を使用するのは初めてです。

エラーが発生し続けます:

Exception Type:     error
Exception Value:    (2, '')

これが何を意味するのかわかりません。これが私のコードです:

data = {'cmd': '_notify-synch',
        'tx': str(request.GET.get('tx')),
        'at': paypal_pdt_test
        }

post = urllib.urlencode(data)

b = StringIO.StringIO()

ch = pycurl.Curl()
ch.setopt(pycurl.URL, 'https://www.sandbox.paypal.com/cgi-bin/webscr')
ch.setopt(pycurl.POST, 1)
ch.setopt(pycurl.POSTFIELDS, post)
ch.setopt(pycurl.WRITEFUNCTION, b.write)
ch.perform()
ch.close()

エラーは行を参照していますch.setopt(pycurl.POSTFIELDS, post)

4

3 に答える 3

4

私はそれが好きです:

post_params = [
    ('ASYNCPOST',True),
    ('PREVIOUSPAGE','yahoo.com'),
    ('EVENTID',5),
]
resp_data = urllib.urlencode(post_params)
mycurl.setopt(pycurl.POSTFIELDS, resp_data)
mycurl.setopt(pycurl.POST, 1)
...
mycurl.perform()
于 2010-04-21T15:08:36.113 に答える
2

これが古い投稿であることは承知していますが、同じエラーを追跡するために朝を費やしました。7.16.2.1 で修正された pycurlにバグがあり、setopt() が 64 ビット マシンで壊れていたことが判明しました。

于 2011-06-01T20:20:04.523 に答える
1

pycurl インストール (または curl ライブラリ) が何らかの形で破損しているようです。カールエラーコードのドキュメントから:

CURLE_FAILED_INIT (2)
Very early initialization code failed. This is likely to be an internal error or problem.

curl または pycurl を再インストールまたは再コンパイルする必要がある場合があります。

ただし、あなたが行っているような単純な POST リクエストを行うには、実際には CURL の代わりに python の「urllib」を使用できます。

import urllib

postdata = urllib.urlencode(data)

resp = urllib.urlopen('https://www.sandbox.paypal.com/cgi-bin/webscr', data=postdata)

# resp is a file-like object, which means you can iterate it,
# or read the whole thing into a string
output = resp.read()

# resp.code returns the HTTP response code
print resp.code # 200

# resp has other useful data, .info() returns a httplib.HTTPMessage
http_message = resp.info()
print http_message['content-length']  # '1536' or the like
print http_message.type  # 'text/html' or the like
print http_message.typeheader # 'text/html; charset=UTF-8' or the like


# Make sure to close
resp.close()

URLを開くには、https://PyOpenSSL をインストールする必要がある場合があります: http://pypi.python.org/pypi/pyOpenSSL

一部のディストリビューションにはこれが含まれていますが、他のディストリビューションでは、お気に入りのパッケージ マネージャーを介して追加のパッケージとして提供されます。


編集: pycurl.global_init()をまだ呼び出しましたか? スクリプトを他のシステムに簡単に移動できるため、可能であれば urllib/urllib2 をお勧めします。

于 2010-01-07T02:06:49.607 に答える