当前位置: 首页 > 面试题库 >

Github-api通过python + urllib2传递json-data时给出404

狄宜然
2023-03-14
问题内容

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

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)

如果我, jsonstring从中删除urlopen(),它不会失败,并向我提供可用下载列表。但是,如果我尝试发布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令牌授权似乎(至少部分地)正常工作。但是,将它们放在一起后,它将停止工作。


问题答案:

我终于可以解决了,为什么不起作用。

我没有正确设置授权令牌的自动生成范围。我使用的令牌没有被“授权”做任何修改,并且使用它的所有尝试修改某项操作(添加下载)的操作均失败。

我必须在授权中添加正确的作用域才能使其正常工作。



 类似资料:
  • 问题内容: 我知道该主题有很多答案,但是找不到解决我问题的方法。我有一个如下所示的ASP.NET MVC Web API: 我尝试这样称呼它: 然后,URL如下所示: 选择: 网址: 两种方法都不起作用。 我是否真的必须以字符串形式发送和接收它或使用POST? 问题答案: 不,不要尝试在GET请求中发送JSON。将JSON与其他具有主体的动词一起使用,例如POST和PUT。 通过使用属性装饰您的a

  • 问题内容: 我正在使用Django和Apache来提供网页。我的JavaScript代码当前包含一个数据对象,该数据对象的值将基于用户从选项菜单中的选择而显示在各种HTML小部件中。我想从Python字典中导出这些数据。我想我知道如何将JavaScript代码嵌入HTML中,但是如何(即时)将数据对象嵌入该脚本中,以便脚本的功能可以使用它? 换句话说,我想从Python字典中创建一个JavaScr

  • 问题内容: 我使用此javascript捕获flexigrid中选中的所有复选框,然后尝试将此行ID数组发送到CFC 低于CFC 当我尝试运行此函数时,我的服务器回答说,传递给removeCertidaoCRC函数的NUMSEQCERTIDAO参数不是数组类型。 我最近刚进入的一个延迟项目中的所有选项都用光了。 问题答案: jQuery可以很好地将数组分开发送,但是ColdFusion不能很好地处

  • 我需要在python脚本和java引擎之间通过stdin和stdout进行一些进程间通信。 我是否可以将python对象转换为JSON,并将整个对象转换为字符串,通过stdin传递到Java,然后将该字符串转换回JSON进行处理,然后将其作为通过字符串转换的JSON对象返回到python 我只想知道是否可以通过stdin发送一个JSON对象,或者有什么可能的方法可以做到这一点

  • 问题内容: 如何通过python模块Requests传递csrftoken?这就是我所拥有的,但是它不起作用,并且我不确定将其传递给哪个参数(数据,标头,身份验证…) 每次都有相同的错误消息。 问题答案: 如果要设置引荐来源标头,则对于该特定站点,您需要将引引来源设置为与登录页面相同的URL: 当使用不安全时,标头通常会被过滤掉,否则无论如何很容易被欺骗,因此大多数站点不再需要设置标头。但是,在使