使用Python中的“请求”模块时遇到问题

时间:2019-01-29 15:23:59

标签: python python-requests http-post

我正在尝试使用requests将JSON数据发布到HTTP端点,但是我现在遇到了这个奇怪的错误(我以前没有问题地使用过它)。

任何故障排除都值得赞赏。

代码:

req = requests.post(HTTP_ENDPOINT, data=json.dumps(data))

输出:

  

AttributeError:模块'requests'没有属性'post'

3 个答案:

答案 0 :(得分:0)

您是否在文件顶部写了import requests?如果没有,那是你的问题。如果是,那么对我来说下一步的调试是 print dir(requests),因为这将告诉您您的请求对象实际上具有什么属性。

答案 1 :(得分:0)

确保HTTP_ENDPOINT和数据有效,应如下所示:

>>> import json

>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}

>>> r = requests.post(url, data=json.dumps(payload))

除了自己对dict进行编码外,您还可以使用json参数(在2.4.2版中添加)直接传递dict,它将自动进行编码:

>>> r = requests.post(url, json=payload)

来源是More complicated POST requests

答案 2 :(得分:0)

如果您的文件夹中有一个名为request.py的文件,则python会将其作为模块导入,并随您使用pip安装的请求包一起导入。

这就是为什么说请求没有属性“ post”的原因。如果您在request.py中定义一个变量,如下所示:

# requests.py
post = lambda *arg: print('unitended concequence')

您可能会看到它打印出该声明,而不是抱怨帖子请求中不包含帖子。 解决方案是重命名文件,以使它们不会遮盖要导入的软件包。例如,将requests.py更改为my_requests.py。