调用YouTrack API创建工单时遇Unrecognized token错误求助
YouTrack API 创建工单报错解决方案
问题原因
你的代码中使用requests.post的data=postData参数时,requests会将字典编码为表单格式提交,而YouTrack API期望接收JSON格式的数据,这就导致服务器解析请求内容时出现JSON语法错误。
修正方案
方案1:使用json参数自动序列化(推荐)
requests库提供了json参数,可以直接传入字典,它会自动将字典序列化为JSON字符串,并正确适配请求格式:
import requests postHeaders = { 'Accept':'application/json', 'Authorization':'Bearer <你的YouTrack令牌>', # 注意:YouTrack授权头格式为Bearer + 令牌 'Content-Type':'application/json' } postData = { 'project':{'id':'0-5'}, 'summary':'sample', 'description':'Sample description' } # 替换data为json参数 responsePost = requests.post("https://yourcompany.youtrack.cloud/api/issues", headers=postHeaders, json=postData) print(responsePost.content)
方案2:手动序列化JSON字符串
如果需要手动控制序列化过程,可使用json.dumps()将字典转为JSON字符串后提交:
import requests import json postHeaders = { 'Accept':'application/json', 'Authorization':'Bearer <你的YouTrack令牌>', 'Content-Type':'application/json' } postData = { 'project':{'id':'0-5'}, 'summary':'sample', 'description':'Sample description' } # 手动将字典转为JSON字符串 responsePost = requests.post("https://yourcompany.youtrack.cloud/api/issues", headers=postHeaders, data=json.dumps(postData)) print(responsePost.content)
额外注意事项
- 确认
Authorization头格式正确:YouTrack Cloud API要求授权头为Bearer <永久令牌>,若你的secret是令牌内容,需补充Bearer前缀。 - 可通过
responsePost.status_code查看响应状态码,201表示工单创建成功。
内容的提问来源于stack exchange,提问作者Kanister
相关产品推荐
相关产品推荐

