You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中正确发送带params参数的JSON-RPC POST请求?

解决方法

你的代码失败的核心原因是没有以JSON格式发送请求数据:requests.post的第二个参数默认对应data字段,会把字典当作表单数据提交,但JSON-RPC接口要求请求体是JSON格式,且需要正确的Content-Type: application/json请求头。

正确的Python实现代码如下:

import requests

# 构造JSON-RPC请求体
payload = {
    "jsonrpc": "2.0",
    "id": 7,
    "method": "eth_call",
    "params": [
        {
            "from": "0x0000000000000000000000000000000000000000",
            "data": "0x41108cf20000000000000000000000000000000000000000000000000000000000000032",
            "to": "0xf86048dff23cf130107dfb4e6386f574231a5c65"
        },
        "latest"
    ]
}

# 通过json参数传递请求体,requests会自动处理序列化和请求头
response = requests.post('https://mainnet.optimism.io/', json=payload)

# 输出响应结果
print(response.json())

关键说明

  • 使用json=payload参数传递请求体时,requests会自动完成JSON序列化,并设置Content-Type: application/json请求头,完全符合JSON-RPC接口的要求。
  • 原代码直接将字典作为第二个参数传入,会被解析为application/x-www-form-urlencoded格式的表单数据,与接口预期格式不匹配,导致请求失败。

内容的提问来源于stack exchange,提问作者unter_983

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:25:26