在邮递员中,我可以向我们的Azure DevOps 2019服务器提交一个查询,没有问题:
POST https://<AZDOSERVER>/<COLLECTION>/<PROJECT>/<TEAM>/_apis/wit/wiql?api-version=5.0
{"query": "Select [System.Id] From WorkItems WHERE [System.AreaPath] UNDER '<AREANAME>'"}但是当我在Python中使用AREANAME时,它似乎遇到了单引号的编码问题。下面是我的代码:
url = "https://<AZDOSERVER>/<COLLECTION>/<PROJECT>/<TEAM>/_apis/wit/wiql?api-version=5.0"
json = '{"query": "Select [System.Id] From WorkItems WHERE [System.AreaPath] UNDER '
+ "'<AREANAME>'" + '" }'
headers = {'Accept': 'application/json; api-version=5.0'}
response = request.post(url, json=json, auth=self.basicauth, headers=headers)我得到一个400错误,并显示以下消息:
b'{"count":1,"value":{"Message":"Error converting value \\"{\\"query\\":
\\"Select [System.Id] From WorkItems WHERE [System.AreaPath] UNDER \'<AREANAME>\'\\" }\\"
to type \'Microsoft.TeamFoundation.WorkItemTracking.WebApi.Models.Wiql\'. Path \'\',
line 1, position 92.\\r\\n"}}'我应该如何正确地将JSON传入python request.post()方法,以便以正确的编码发送它?我尝试通过Fiddler捕获我的出站请求,但它看不到python流量。我也在安装Wireshark,但这需要一段时间。我还逐步介绍了request.post方法,以尝试并理解它是如何构建请求主体的。当它覆盖到一个字节数组时,它似乎正确地处理了单引号。
发布于 2020-04-20 14:26:20
弄清楚了: request.post()接受json参数的字典对象,而不是json字符串。
https://stackoverflow.com/questions/61311163
复制相似问题