首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python中的CURL替代

Python中的CURL替代
EN

Stack Overflow用户
提问于 2010-04-19 20:55:13
回答 7查看 234.4K关注 0票数 115

我有一个在PHP中使用的cURL调用:

curl -i -H 'Accept: application/xml‘-u登录:密钥"https://app.streamsend.com/emails

我需要一种在Python中做同样事情的方法。在Python语言中有没有cURL的替代品?我知道urllib,但我是Python新手,不知道如何使用它。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-04-19 22:24:03

代码语言:javascript
复制
import urllib2

manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
manager.add_password(None, 'https://app.streamsend.com/emails', 'login', 'key')
handler = urllib2.HTTPBasicAuthHandler(manager)

director = urllib2.OpenerDirector()
director.add_handler(handler)

req = urllib2.Request('https://app.streamsend.com/emails', headers = {'Accept' : 'application/xml'})

result = director.open(req)
# result.read() will contain the data
# result.info() will contain the HTTP headers

# To get say the content-length header
length = result.info()['Content-Length']

使用urllib2调用您的cURL。完全未经测试。

票数 69
EN

Stack Overflow用户

发布于 2012-04-11 01:32:49

您可以使用Requests: HTTP for Humans用户指南中描述的HTTP请求。

票数 134
EN

Stack Overflow用户

发布于 2011-11-15 12:38:52

下面是一个使用urllib2的简单示例,它对GitHub执行基本身份验证。

代码语言:javascript
复制
import urllib2

u='username'
p='userpass'
url='https://api.github.com/users/username'

# simple wrapper function to encode the username & pass
def encodeUserData(user, password):
    return "Basic " + (user + ":" + password).encode("base64").rstrip()

# create the request object and set some headers
req = urllib2.Request(url)
req.add_header('Accept', 'application/json')
req.add_header("Content-type", "application/x-www-form-urlencoded")
req.add_header('Authorization', encodeUserData(u, p))
# make the request and print the results
res = urllib2.urlopen(req)
print res.read()

此外,如果您将其封装在脚本中并从终端运行它,则可以通过管道将响应字符串传递给'mjson.tool‘以实现漂亮的打印。

代码语言:javascript
复制
>> basicAuth.py | python -mjson.tool

最后要注意的是,urllib2只支持GET和POST请求。

如果您需要使用其他HTTP动词,比如DELETE、PUT等,那么您可能想看看PYCURL

票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2667509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档