编程语言
首页 > 编程语言> > 当使用python urllib2传递json数据时,Github-api给出404

当使用python urllib2传递json数据时,Github-api给出404

作者:互联网

我有以下代码,它应该执行在github上创建新下载的第一部分.它应该使用POST发送json数据.

jsonstring = '{"name": "test", "size": "4"}'
req = urllib2.Request("https://api.github.com/repos/<user>/<repo>/downloads")
req.add_header('Authorization', 'token ' + '<token>')
result = urllib2.urlopen(req, jsonstring)

如果我从urlopen()中删除了jsonstring,它不会失败,并提供可用下载列表.但是,如果我尝试POST json-string,我会收到404错误.

问题必须与json或我发送它的方式有关,但我无法弄清楚问题是什么.
< ...>处的字符串在实际代码中是正确的,我只是从帖子中删除它们

我在命令行上使用curl尝试大致相同,使用稍微不同的身份验证方法,并且它有效.

测试:

Works(返回想要的json):

curl -u "user:password" --data "json..." https://api.github.com/repos/<user>/<repo>/downloads

作品:

curl -H 'Authorization: token <token>' https://api.github.com/

不起作用(返回“无效凭证”):

curl -H 'Authorization: token <invalid_token>' https://api.github.com/

不起作用(“未找到”):

curl -H 'Authorization: token <valid_token>' --data "json..." https://api.github.com/repos/<user>/<repo>/downloads

这似乎不是特定于python代码的问题. json POST数据似乎很好,OAuth令牌授权似乎(至少部分)工作.但是当这些放在一起时,它就会停止工作.

解决方法:

我终于能够解决,为什么它不起作用.

我没有正确设置授权令牌的自动化范围.我正在使用的令牌未被“授权”进行任何修改,并且使用它的每个操作(试图修改某些内容(添加下载))都失败了.

我必须在授权中添加正确的范围才能使其正常工作.

标签:json,python,post,urllib2,github-api
来源: https://codeday.me/bug/20190621/1250022.html