使用python请求时,Bitbucket API返回'Bad request'

时间:2017-06-29 18:18:01

标签: python python-3.x python-requests bitbucket-api

我想向Bitbucket API发出创建存储库的请求。 以下卷曲有效:

curl -v -X POST -d '{"scm": "git", "is_private": "true", "fork_policy": "no_forks", "project": {"key": "MARS"}}' -H "Content-Type: application/json"  https://api.bitbucket.org/2.0/repositories/myteam/test -u <user-name>

所以我在python中尝试使用请求:

data = {'scm': 'git', 'is_private': 'true', 'fork_policy': 'no_forks', 'project': {'key': 'MARS'}}
auth=(user, password)
headers = {"Content-Type": "application/json"}
url = "https://api.bitbucket.org/2.0/repositories/myteam/test"
res = requests.post(url, data=data, headers=headers, auth=auth)

res返回'错误请求'(400)。为什么呢?

1 个答案:

答案 0 :(得分:2)

从您的curl请求中可以明显看出,Bitbucket正在接受JSON编码的POST数据。 使用requests作为表单编码数据发送数据会导致HTTP Error 400 Bad请求。

要以JSON编码的POST数据发送,请使用:

requests.post(url, json=data, headers=headers, auth=auth)

参考:

http://docs.python-requests.org/en/master/user/quickstart/#more-complicated-post-requests