当使用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