【发布时间】:2019-10-29 19:56:12
【问题描述】:
I saw this question 关于 Python requests 尝试对 Azure DevOps REST API 进行身份验证并接收 HTTP 状态 203,非权威信息。查看文本响应时,它只是登录页面的 HTML,并没有真正让我登录。我使用了 Authorization: Basic <BASE64 PAT> listed on their REST API page,但它似乎不起作用。这是我的代码示例:
"""Using Python and Requests to interact with Azure DevOps REST API
"""
import base64
import pprint as pp
import requests
with open('ado_pat.txt', 'r') as file:
PERSONAL_AUTHENTICATION_TOKEN = file.read().replace('\n', '')
PAT_BASE_64 = base64.b64encode(
b'{PERSONAL_AUTHENTICATION_TOKEN}').decode('ascii')
COLLECTION = 'collection_name'
ORGANIZATION_URL = f'https://dev.azure.com/{COLLECTION}'
RESOURCE_PATH = '/_apis/projects?api-version=5.1'
HEADERS = {
'Authorization': f'Basic {PAT_BASE_64}',
'Accept': 'application/json'
}
try:
ADO_RESPONSE = requests.get(
ORGANIZATION_URL + RESOURCE_PATH, headers=HEADERS)
pp.pprint(ADO_RESPONSE)
pp.pprint(ADO_RESPONSE.text)
ADO_RESPONSE.raise_for_status()
except requests.exceptions.HTTPError as err:
pp.pprint(err)
这是我得到的回复:
<Response [203]>
(''\r\n'
然后它会显示整个登录页面。我会使用microsoft/azure-devops-python-api,但我并不真正理解或看不到我可以调用的方法,也不真正理解它是如何工作的。
--编辑工作示例--
这个例子现在可以工作了。
"""Using Python and Requests to interact with Azure DevOps REST API
"""
import base64
import pprint as pp
import requests
with open('ado_pat.txt', 'r') as file:
PERSONAL_AUTHENTICATION_TOKEN = file.read().replace('\n', '')
USERNAME = ""
USER_PASS = USERNAME + ":" + PERSONAL_AUTHENTICATION_TOKEN
B64USERPASS = base64.b64encode(USER_PASS.encode()).decode()
COLLECTION = 'collection_name'
ORGANIZATION_URL = f'https://dev.azure.com/{COLLECTION}'
RESOURCE_PATH = '/_apis/projects?api-version=5.1'
HEADERS = {
'Authorization': 'Basic %s' % B64USERPASS
}
try:
ADO_RESPONSE = requests.get(
ORGANIZATION_URL + RESOURCE_PATH, headers=HEADERS)
pp.pprint(ADO_RESPONSE)
pp.pprint(ADO_RESPONSE.text)
ADO_RESPONSE.raise_for_status()
except requests.exceptions.HTTPError as err:
pp.pprint(err)
【问题讨论】:
-
我会将我的代码更新到工作版本。我真正得到的是 M$ 示例实际上并没有工作,而且不是很好。
-
感谢您在这里分享您的解决方案,您可以接受它作为答案,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档这个帖子,谢谢。meta.stackexchange.com/questions/5234/…
-
接受。我以前看过它,但我需要等待比其他事情更长的时间。
标签: python azure azure-devops python-requests