如果 url 通过 Postman 在同一台机器上运行良好,那么它也应该适用于您的 python 脚本。
你可以检查几个点:
1.API版本。对于 TFS2018U2,它是 4.1,对于 Azure Devops Server 2019,它是 5.0。
2.Url,通常是这样的:
http://{tfsServerName}:8080/tfs/{CollectionName}/{ProjectName}/_apis/build/definitions?api-version=4.1
除非在服务器上启用 SSL,否则不应使用 https。另外,请确保启用了基本身份验证。检查这个similar one。
3.查看python代码,windows操作系统有两种认证方式:
Windows 身份验证和带有 PAT 的基本身份验证。
对于 Windows 身份验证,您可以使用这样的代码(来自Roopendra 的提示):
import logging
import getpass
import requests
from requests_ntlm import HttpNtlmAuth
username = 'DomainName\\Administrator'
password = 'xxx'
tfsApi = 'http://xxx:8080/tfs/xxx/xxx/_apis/build/definitions?api-version=x.x'
tfsResponse = requests.get(tfsApi,auth=HttpNtlmAuth(username,password))
if(tfsResponse.ok):
tfsResponse = tfsResponse.json()
print(tfsResponse)
else:
tfsResponse.raise_for_status()
对于带有 pat 的基本身份验证,您可以使用代码(来自Jack Jia 的提示):
import requests
import base64
pat = 'acxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiq'
authorization = str(base64.b64encode(bytes(':'+pat, 'ascii')), 'ascii')
headers = {
'Accept': 'application/json',
'Authorization': 'Basic '+authorization
}
response = requests.get(
url="http://MyServerName:8080/tfs/xxx/xxx/_apis/build/definitions?api-version=x.x", headers=headers)
print(response.text)
您也可以尝试创建一个新的 PAT 将完全访问用于测试目的...