python - 为什么 Python 请求没有按预期工作

标签 python api http python-requests rpc

我想从 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.postjson 参数。

关于python - 为什么 Python 请求没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75372785/

相关文章:

python - pyftpdlib make os.makedirs 权限被拒绝

javascript - 在需要时加载谷歌地图 api 脚本? jquery.getScript()?

ruby-on-rails - 使用 Devise、Doorkeeper 和 OAuth2 token 的 API 和应用程序身份验证

javascript - Angular 5 不显示服务器的响应值

python - 递归限制是包含还是排除,额外的堆栈帧来自哪里?

Python如何在Docker中接收SIGINT以停止服务?

python - Django 序列化器将模型字段显示为字典

java - 让 Jackson 将 Json 对象解析为原始 String

c# - 短语 "URL reservation in HTTP.SYS"是什么意思?

ios - Angularjs http.jsonp iOS9 404