python中调用API的几种方式:
- urllib2
- httplib2
- pycurl
- requests
urllib2
import
urllib2, urllib
github_url
=
'
https://api.github.com/user/repos
'
password_manager
=
urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, github_url,
'
user
'
,
'
***
'
)
auth
= urllib2.HTTPBasicAuthHandler(password_manager)
#
create an authentication handler
opener = urllib2.build_opener(auth)
#
create an opener with the authentication handler
urllib2.install_opener(opener)
#
install the opener...
request = urllib2.Request(github_url, urllib.urlencode({
'
name
'
:
'
Test repo
'
,
'
description
'
:
'
Some test repository
'
}))
#
Manual encoding required
handler =
urllib2.urlopen(request)
print
handler.read()
2. httplib2
import
urllib, httplib2
github_url
=
'
h = httplib2.Http(
"
.cache
"
)
h.add_credentials(
"
user
"
,
"
******
"
,
"
data = urllib.urlencode({
"
name
"
:
"
test
"
})
resp, content
= h.request(github_url,
"
POST
"
, data)
print
content
3. pycurl
import
pycurl, json
github_url
=
"
user_pwd =
"
user:*****
"
data
= json.dumps({
"
name
"
:
"
test_repo
"
,
"
description
"
:
"
Some test repo
"
})
c
=
pycurl.Curl()
c.setopt(pycurl.URL, github_url)
c.setopt(pycurl.USERPWD, user_pwd)
c.setopt(pycurl.POST,
1
)
c.setopt(pycurl.POSTFIELDS, data)
c.perform()
4. requests
import
requests, json
github_url
=
"
data = json.dumps({
'
name
'
:
'
test
'
,
'
description
'
:
'
some test repo
'
})
r
= requests.post(github_url, data, auth=(
'
user
'
,
'
*****
'
))
print
r.json
以上几种方式都可以调用API来执行动作,但requests这种方式代码最简洁,最清晰,建议采用。

