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

Python调用公用事业API时如何携带公钥证书及修复EOF语法错误

语法错误修复

触发unexpected EOF while parsing的直接原因是requests.post调用语句末尾缺少闭合的右括号,同时存在参数传递逻辑错误:你把请求头字典错误传入了cert参数的元组中,不符合requests的参数要求。

双向SSL认证(携带公钥证书)的正确写法

requests库携带客户端公钥证书做双向认证的规则如下:

  • cert参数接收二元组,第一个值是你的公钥证书文件(.crt/.pem格式)路径,第二个值是对应的私钥文件(.key格式)路径
  • 你定义的data是请求头配置,需要传给headers参数
  • 如果你需要用指定CA bundle校验服务端证书,将verify参数设置为你的CA bundle路径即可

修正后可运行的代码

import requests, json

# 服务端证书校验用的CA bundle路径
verify='/users/myprofile/Downloads/.me/ca_bundle.crt'
# 请求头配置
headers = {"Authorization": "Basic ODE2YzMzM2ZmYzUwNDg1MThlNTJmMWMyMWJiYzZhOTQ6NWExNDFhMGExNGI4NGQ2OWIyMjUxYTI2OGYwZDJlYjk="}
url = "https://api.pge.com/datacustodian/test/oauth/v2/token?grant_type=client_credentials"
# 客户端证书配置:替换第一个路径为你的公钥证书文件路径,第二个为私钥路径
client_cert = ("/users/David/Downloads/bei.me/client_public.crt", "/users/David/Downloads/bei.me/private.key")

response = requests.post(url, headers=headers, cert=client_cert, verify=verify)

print("status code", response.status_code)

注意:把上述代码里的/users/David/Downloads/bei.me/client_public.crt替换为你自己的公钥证书实际存储路径即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:54:03