Bash可运行cURL命令转换为Python requests/pycurl代码咨询
requests 库实现方案
优先推荐用更易用的requests实现,执行前先安装依赖:pip install requests
import requests import urllib3 # 关闭SSL不校验产生的警告 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) # 配置参数 cert_path = "../cert/my_cert.pem" cert_password = "password123" target_url = "https://my.target.url" payload = { "document": { "header": { "exportType": "XML" } } } # 发起POST请求 response = requests.post( url=target_url, json=payload, cert=cert_path, cert_password=cert_password, verify=False # 对应curl的-k参数,跳过服务端SSL证书校验 ) # 将响应内容写入本地文件 with open(".output_data.xml", "wb") as f: f.write(response.content) # 对应curl的-v参数,需要调试时可打开以下注释打印请求详情 # print("请求状态码:", response.status_code) # print("响应头:", dict(response.headers))
pycurl 库实现方案
如果需要更贴近原生curl的行为,可以用pycurl实现,执行前先安装依赖:pip install pycurl
import pycurl import json # 配置参数 cert_path = "../cert/my_cert.pem" cert_password = "password123" target_url = "https://my.target.url" payload = json.dumps({ "document": { "header": { "exportType": "XML" } } }) # 初始化curl对象 c = pycurl.Curl() # 设置请求地址 c.setopt(c.URL, target_url) # 对应-k参数,跳过SSL证书校验 c.setopt(c.SSL_VERIFYPEER, 0) c.setopt(c.SSL_VERIFYHOST, 0) # 配置客户端证书和密码 c.setopt(c.SSLCERT, cert_path) c.setopt(c.SSLCERTPASSWD, cert_password) # 配置POST请求参数 c.setopt(c.POST, 1) c.setopt(c.POSTFIELDS, payload) # 配置请求头 c.setopt(c.HTTPHEADER, ['Content-Type: application/json']) # 对应curl的-v参数,开启调试日志输出,不需要可注释 c.setopt(c.VERBOSE, 1) # 把响应内容直接写入本地文件 with open(".output_data.xml", "wb") as f: c.setopt(c.WRITEDATA, f) # 执行请求 c.perform() # 释放资源 c.close()
内容的提问来源于stack exchange,提问作者DelTheDub
相关产品推荐
相关产品推荐

