如何将指定CURL POST请求转换为可正常执行的Python requests代码
问题排查与修正方案
你的代码存在3个核心错误,调整后即可正常运行:
- 错误覆盖了requests库对象:代码第一行
requests = "curl -v --location"将需要导入的requests网络请求库替换成了普通字符串,导致后续调用requests.post方法直接报错 - 请求参数类型错误:curl的
--data-raw对应POST请求的body载荷,你使用的params参数是用来拼接URL后缀的查询参数,和需求完全不匹配 - 缺少requests库导入步骤,代码无法找到依赖库
修正后的可运行代码
# 先导入requests库,不要自定义重命名requests变量 import requests url = "http://127.0.0.1:8080/abc" # 替换为你实际的JSON字典数据,比如{"key":"value"} payload = {"your": "data"} headers = {'Content-Type': 'application/json'} # 对应curl的--location参数显式开启重定向,requests.post默认也开启该配置 # 对应--data-raw传JSON载荷用json参数,requests会自动序列化字典为JSON字符串 r = requests.post(url=url, headers=headers, json=payload, allow_redirects=True) # 对应curl的-v参数,打印调试信息 print("响应状态码:", r.status_code) print("响应头:", r.headers) print("响应内容:", r.text)
额外说明
如果你要直接传已经序列化好的JSON字符串,把json=payload改成data=payload即可,不需要修改其他配置。
内容的提问来源于stack exchange,提问作者Ashwini kumar jha
相关产品推荐
相关产品推荐

