我正在尝试向此网站发帖请求:https://www.myetherapi.com/。我不确定我的请求有什么问题,但print(res)
会返回<Response [403]>
而print(res.json())
会返回错误:
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
代码:
import requests
import json
url = 'https://api.myetherapi.com/eth'
headers = {'content-type': 'application/json'}
payload = {
"jsonrpc": "2.0",
"method": "eth_getBalance",
"params": ["0x7cB57B5A97eAbe94205C07890BE4c1aD31E486A8", "latest"],
"id": 1
}
res = requests.post(url, data=json.dumps(payload), headers=headers)
print(res)
print(res.json())
对我做错了什么的想法?
编辑:
我发布了这个问题,然后关闭了我的电脑。当我几个小时后回来并在这个帖子上阅读答案时,我再次运行代码并且它有效。然后几分钟后它再也没有工作了。我所做的就是在它工作和停止工作之间浏览一些网页。我在pycharm中运行它。 How i am running it
答案 0 :(得分:0)
你有几次尝试过吗?您还应该检查res.text
,可能存在与您的问题相关的错误响应。
也许你应该尝试代理? http://docs.python-requests.org/en/master/user/advanced/#proxies
上面的代码可以运行并返回:
>>> res.json()
{'jsonrpc': '2.0', 'result': '0x4017bc319327a00', 'id': 1}
答案 1 :(得分:0)
来自wiki的HTTP 403禁止:
HTTP 403是一个HTTP状态代码,表示客户端尝试与之通信的服务器理解该请求,但由于授权以外的原因而无法满足该条件。
错误403:“服务器理解了请求,但拒绝履行请求。授权无效,请求不应重复。”
也许服务器避免成为垃圾邮件。 (或者你的互联网有问题) 在某些情况下,这是因为缺少User-Agent。它可能有所帮助。 你可以查看这个问题。 Python requests. 403 Forbidden