【发布时间】:2011-05-21 13:59:11
【问题描述】:
我正在尝试使用 bitbucket's API 获取私有存储库中的问题列表。
我已确认 HTTP 基本身份验证适用于 hurl,但我无法在 Python 中进行身份验证。改编自 tutorial 的代码,我编写了以下脚本。
import cookielib
import urllib2
class API():
api_url = 'http://api.bitbucket.org/1.0/'
def __init__(self, username, password):
self._opener = self._create_opener(username, password)
def _create_opener(self, username, password):
cj = cookielib.LWPCookieJar()
cookie_handler = urllib2.HTTPCookieProcessor(cj)
password_manager = urllib2.HTTPPasswordMgrWithDefaultRealm()
password_manager.add_password(None, self.api_url, username, password)
auth_handler = urllib2.HTTPBasicAuthHandler(password_manager)
opener = urllib2.build_opener(cookie_handler, auth_handler)
return opener
def get_issues(self, username, repository):
query_url = self.api_url + 'repositories/%s/%s/issues/' % (username, repository)
try:
handler = self._opener.open(query_url)
except urllib2.HTTPError, e:
print e.headers
raise e
return handler.read()
api = API(username='my_username', password='XXXXXXXX')
api.get_issues('my_username', 'my_repository') 结果:
>>>
Server: nginx/0.7.62
Date: Mon, 19 Apr 2010 16:15:06 GMT
Content-Type: text/plain
Connection: close
Vary: Authorization,Cookie
Content-Length: 9
Traceback (most recent call last):
File "C:/USERS/personal/bitbucket-burndown/bitbucket-api.py", line 29, in <module>
print api.get_issues('my_username', 'my_repository')
File "C:/USERS/personal/bitbucket-burndown/bitbucket-api.py", line 25, in get_issues
raise e
HTTPError: HTTP Error 401: UNAUTHORIZED
api.get_issues('jespern', 'bitbucket') 就像一个魅力。
我的代码有什么问题?
【问题讨论】:
标签: python urllib2 bitbucket bitbucket-api