首页 > 编程问答 >Azure 工作项 Azure REST API POST 请求 - 503 服务不可用 0x80070057,无效请求

Azure 工作项 Azure REST API POST 请求 - 503 服务不可用 0x80070057,无效请求

时间:2024-07-30 09:19:32浏览次数:9  
标签:python azure-devops azure-devops-rest-api tfs-workitem

我正在尝试使用 python 脚本以编程方式在 Azure 板上创建问题卡。

我正在使用 PAT(个人访问令牌)。

headers = base64encodedPAT
headers[Content-Type']='application/json-patch+json' 
payload = dictionary_of_different_values_to_set

requesturl=f"https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/$Issue?api-version=7.0"
requestcall = requests.post(url=requesturl, headers=headers, data=bytes(json.dumps(payload),'utf-8'))

我尝试了什么:

  • 当我运行 azure 管道时,我得到“失败:400错误请求”
  • 当我在在线休息Api测试上运行它时,我得到“503服务不可用0x80070057,无效请求”
  • 我参考了微软网站,但没有太多细节
  • 我看到了很多YouTube 视频显示了 PAT 的创建,但没有介绍如何在管道中使用它。关于“工作项”Apis 的视频不多。

请让我知道我的方法有什么问题,或者提出一些想法,或者向我指出好的在线资源。


问题代码片段中的一个明显错误是身份验证标头的格式。不应该对整个 PAT 进行 base64 编码。

以下是使用 Python 和 PAT 创建 Azure 工作项的更正后的步骤,以及解决潜在问题的一些提示:

1. 身份验证标头格式:

import base64

personal_access_token = 'YOUR_PAT_HERE' # 不要将的 PAT 硬编码到脚本中。将其存储在一个安全的位置。
encoded_pat = base64.b64encode(f':{personal_access_token}'.encode('utf-8')).decode('utf-8')

headers = {
    'Authorization': f'Basic {encoded_pat}',
    'Content-Type': 'application/json-patch+json' 
}

2. 有效负载结构:

确保的 payload 是正确格式化的 JSON 补丁操作数组。每个操作都应指定其操作类型 ( op )、要修改的字段的路径 ( path ) 以及要应用的值 ( value )。

payload = [
    {
        "op": "add",
        "path": "/fields/System.Title",
        "value": "Sample work item title"
    },
    {
        "op": "add",
        "path": "/fields/System.Description",
        "value": "This is a sample work item description"
    }
    # 根据需要添加更多字段...
]

3. 完整的代码:

import requests
import base64
import json

# **不要** 将的 PAT 硬编码到脚本中。将其存储在一个安全的位置。
personal_access_token = 'YOUR_PAT_HERE' 
encoded_pat = base64.b64encode(f':{personal_access_token}'.encode('utf-8')).decode('utf-8')

organization = 'YOUR_ORGANIZATION_NAME'
project = 'YOUR_PROJECT_NAME'

headers = {
    'Authorization': f'Basic {encoded_pat}',
    'Content-Type': 'application/json-patch+json' 
}

payload = [
    {
        "op": "add",
        "path": "/fields/System.Title",
        "value": "Sample work item title"
    },
    {
        "op": "add",
        "path": "/fields/System.Description",
        "value": "This is a sample work item description"
    }
]

request_url = f"https://dev.azure.com/{organization}/{project}/_apis/wit/workitems/$Issue?api-version=7.0"
response = requests.post(url=request_url, headers=headers, data=json.dumps(payload))

if response.status_code == 201:
    print("工作项已成功创建!")
    print(response.json())
else:
    print(f"请求失败,状态码:{response.status_code}")
    print(response.text)

故障排除提示:

  • 验证 PAT: 确保的 PAT 有权创建工作项。
  • 检查 API 版本: 验证是否在请求 URL 中使用了正确的 API 版本。
  • 检查有效负载: 双重检查有效负载以确保其符合 Azure DevOps API 文档中指定的结构。
  • 详细日志记录: 打印来自 requests 库的详细响应状态代码和内容,以获取有关错误的更多信息。

通过更正身份验证标头并仔细检查这些点,应该能够成功创建 Azure 工作项。

标签:python,azure-devops,azure-devops-rest-api,tfs-workitem
From: 78808222

相关文章

  • python性能分析器:cProfile
    代码:(1)importcProfileimportrecProfile.run('re.compile("foo|bar")')运行结果:(2)importcProfiledefrunRe():importrecProfile.runctx('re.compile("foo|bar")',None,locals())runRe()运行结果:(3)i......
  • 基于Python网络招聘数据可视化分析系统的设计与实现
    基于Python网络招聘数据可视化分析系统的设计与实现DesignandImplementationofPython-basedNetworkRecruitmentDataVisualizationAnalysisSystem完整下载链接:基于Python网络招聘数据可视化分析系统的设计与实现文章目录基于Python网络招聘数据可视化分析系......
  • 即使使用 docker run -dit 命令,python-Docker 容器也会在运行两秒后退出
    我想从此处使用Dockerfile测试自定义kubernetes调度程序:FROMpython:3.7RUNpipinstallkubernetesCOPYscheduler.py/scheduler.pyCMDpython/scheduler.py一旦创建了映像和容器:dockerbuild-tapp.dockercontainerrun-d-it--namemy-sched......
  • Python多重处理,如何避免创建具有百万个对象的元组
    python多处理新手。我有一项任务,涉及访问网络服务数百万次并将响应保存在文件中(每个请求都有单独的文件)。我已经得到了高级工作代码,但对一些事情没有感到困惑。以下两种语法有什么区别?pool=Pool(processes=4)pool.starmap(task,listOfInputParametersTu......
  • Python OpenCV - 显示坏像素检查测试
    我想找到显示器中存在的每个坏像素。坏像素可能是颜色不正确的像素,或者像素只是黑色。显示屏的尺寸为160x320像素。所以如果显示效果好的话,必须有160*320=51200像素。如果显示器没有51200像素,那就是坏的。另外,我想知道每个坏像素的位置。一旦拍摄的图像太大,我将共享一个......
  • 在python日志输出的每一行前面添加变量缩进
    我正在将日志记录构建到一个Python应用程序中,我希望它是人类可读的。目前,调试日志记录了调用的每个函数以及参数和返回值。这意味着,实际上,嵌套函数调用的调试日志可能如下所示:2024-07-2916:52:26,641:DEBUG:MainController.initialize_componentscalledwithargs<control......
  • 使用 DQN 实现 pong,使用 python 中的特征向量而不是像素。我的 DQNA 实现代码正确吗,因
    我正在致力于使用OpenAI的Gym为Pong游戏实现强化学习(RL)环境。目标是训练人工智能代理通过控制球拍来打乒乓球。代理收到太多负面奖励,即使它看起来移动正确。具体来说,奖励函数会惩罚远离球的智能体,但这种情况发生得太频繁,即使球朝球拍移动时似乎也会发生。观察......
  • Python CDLL 无法加载两次
    我正在尝试用python创建一个密码管理器,但遇到了一个问题,一旦加载了一种类型的dll,我就无法加载不同的dll,在这个示例中,我加载了一个dll,并尝试解密加密的密码数据,它工作正常,直到我加载另一个不同的nss3.dll文件,此时它给我一个错误:“过程入口点HeapAlloc无法位于动态链......
  • 你能将 HTTPS 功能添加到 python Flask Web 服务器吗?
    我正在尝试构建一个Web界面来模拟网络设备上的静态接口,该网络设备使用摘要式身份验证和HTTPS。我想出了如何将摘要式身份验证集成到Web服务器中,但我似乎无法找到如何使用FLASK获取https,如果您可以向我展示如何实现,请评论我需要使用下面的代码做什么来实现这一点。from......
  • Python:比较 csv 文件并打印相似之处
    我需要比较两个csv文件并打印出它们的相似之处。第一个文件有名称和浓度,第二个文件就像只有名称的“最佳”列表,我需要绘制相似性图表。例如,这就是我的列表的样子:file1-old_file.csvname_id,conc_test1,conc_test2name1,####,####name2,###......