像curl这样的Python代码

die*_*us9 9 python curl urllib2 pycurl

在卷曲我这样做:

curl -u email:password http://api.foursquare.com/v1/venue.json?vid=2393749
Run Code Online (Sandbox Code Playgroud)

我怎么能在python中做同样的事情?

Sam*_*lan 6

这是pycurl中的等价物:

import pycurl
from StringIO import StringIO

response_buffer = StringIO()
curl = pycurl.Curl()

curl.setopt(curl.URL, "http://api.foursquare.com/v1/venue.json?vid=2393749")

curl.setopt(curl.USERPWD, '%s:%s' % ('youruser', 'yourpassword'))

curl.setopt(curl.WRITEFUNCTION, response_buffer.write)

curl.perform()
curl.close()

response_value = response_buffer.getvalue()
Run Code Online (Sandbox Code Playgroud)


die*_*us9 4

“问题可能在于,Python 库根据 HTTP 标准,首先发送未经身份验证的请求,然后只有在重试 401 应答时,才会发送正确的凭据。如果 Foursquare 服务器不执行“完全标准身份验证”, “那么图书馆就无法工作。

尝试使用标头进行身份验证:”

摘自Python urllib2 基本身份验证问题

import urllib2
import base64

req = urllib2.Request('http://api.foursquare.com/v1/venue.json?vid=%s' % self.venue_id)
req.add_header('Authorization: Basic ',base64.b64encode('email:password'))
res = urllib2.urlopen(req)
Run Code Online (Sandbox Code Playgroud)