我想从 JSON RPC API 端点获取一些信息。 等效的curl命令是这样的:
curl 'https://api.mainnet-beta.solana.com' -X POST -H "Content-Type: application/json" -d '
{
"jsonrpc": "2.0", "id": 1,
"method": "getTokenAccountBalance",
"params": [
"FYj69uxq52dee8AyZbRyNgkGbhJdrPT6eqMhosJwaTXB"
]
}
'
它有效并且响应是:
{"jsonrpc":"2.0","result":{"context":{"apiVersion":"1.13.5","slot":176510490},"value":{"amount":"68662508944","decimals":5,"uiAmount":686625.08944,"uiAmountString":"686625.08944"}},"id":1}
但是当我想在 python 脚本中进行调用时:
headers={'Content-type': 'application/json'}
data1 = {
"jsonrpc": "2.0",
"id": 1,
"method": "getTokenAccountBalance",
"params": [
"FYj69uxq52dee8AyZbRyNgkGbhJdrPT6eqMhosJwaTXB",
]
}
response = requests.post('https://api.mainnet-beta.solana.com',headers=headers,data=data1)
print(response.text)
我明白了:
{"jsonrpc":"2.0","error":{"code":-32700,"message":"Parse error"},"id":null}
可能是什么问题?
最佳答案
这是因为您应该使用 requests.post
函数的 json
参数,而不是 data
参数。
修复方法如下:
import requests
headers = {'Content-type': 'application/json'}
data1 = {
"jsonrpc": "2.0",
"id": 1,
"method": "getTokenAccountBalance",
"params": [
"FYj69uxq52dee8AyZbRyNgkGbhJdrPT6eqMhosJwaTXB",
]
}
response = requests.post('https://api.mainnet-beta.solana.com',
headers=headers,
json=data1)
print(response.text)
注意 requests.post
的 json
参数。
关于python - 为什么 Python 请求没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75372785/