В Почтальоне я могу отправить запрос на наш 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 traffi c. Я тоже устанавливаю Wireshark, но это займет некоторое время. Я также прошел через метод request.post, чтобы попытаться понять, как он строит тело запроса. Кажется, что он обрабатывает одинарные кавычки правильно, когда он охватывает байтовый массив.