如何将指定curl命令转换为等效的Python requests POST代码
将curl命令转换为Python POST请求的解决方案
我尝试将以下curl命令转换为Python POST请求,但未能成功。相关curl命令及部分Python代码如下:
原始curl命令
curl -k -u admin:admin -X POST --header "Content-Type:multipart/mixed" --header "Accept:application/json" -F "myPartnm1=@sftprest;type=application/json" -F "myPartname2=@sftppvteopenkey;type=application/json/oc-stream" http://cdrteo456.serms.com:4456/api/v/cert
我的部分Python代码
if response.status_code == 200: print(response.text)
正确的Python实现
使用requests库即可实现对应的请求,需覆盖curl命令中的所有参数逻辑,完整代码如下:
import requests # 配置认证信息 auth = ('admin', 'admin') # 请求目标URL url = 'http://cdrteo456.serms.com:4456/api/v/cert' # 构造多部分表单数据,对应curl中的-F参数 # 每个字段格式:(文件名, 打开的文件对象, 对应Content-Type) files = { 'myPartnm1': ('sftprest', open('sftprest', 'rb'), 'application/json'), 'myPartname2': ('sftppvteopenkey', open('sftppvteopenkey', 'rb'), 'application/json/oc-stream') } # 发送POST请求 response = requests.post( url, auth=auth, # 处理-u指定的基本认证 files=files, # 处理多部分文件上传 verify=False, # 对应-k参数,禁用SSL证书验证 headers={'Accept': 'application/json'} # 设置Accept请求头 ) # 响应处理逻辑 if response.status_code == 200: print(response.text) else: print(f"请求失败,状态码:{response.status_code},响应内容:{response.text}")
关键注意事项
- 无需手动指定
Content-Type: multipart/mixed:requests在传入files参数时会自动生成合适的多部分请求头,若服务端强制要求multipart/mixed,可在headers中手动添加该字段 - 文件需确保路径正确:代码中
open('sftprest', 'rb')假设文件在当前工作目录,若文件在其他路径需填写完整路径 - 若没有安装
requests库,需先执行pip install requests安装
内容的提问来源于stack exchange,提问作者Grey
相关产品推荐
相关产品推荐

