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

Python3 requests请求失败但等价curl命令正常运行的问题

问题排查与解决方案

核心可能原因:手动输入的磁盘名存在隐藏空白字符

你的curl命令里磁盘名是"dbdisk01",但Python脚本中手动输入磁盘名时没有去除前后空白字符(读取文件时做了strip()处理,但手动输入分支遗漏了)。如果输入时不小心带了空格、制表符等,就会导致API收到的磁盘名和curl请求不一致,触发"无法识别磁盘名"的错误。

快速修复方案

修改手动输入磁盘名的代码,添加strip()去除空白字符:

else:
    volumes = [input("Enter volume name: ").strip()]

进一步排查步骤

如果修复后仍有问题,需要对比Python脚本和curl发送的请求细节,确认完全一致:

  1. 打印生成的JSON payload,确认和curl的参数完全匹配:
    在创建json_payload后添加以下代码,输出结构化的payload:

    import json
    print("Generated payload:")
    print(json.dumps(json_payload, indent=2))
    

    对比curl里的-d参数,检查每个字段(尤其是disks数组)的内容是否完全一致。

  2. 查看requests发送的实际请求细节,开启调试日志:
    在脚本开头添加日志配置,查看完整的请求头和body:

    import logging
    import http.client
    http.client.HTTPConnection.debuglevel = 1
    logging.basicConfig()
    logging.getLogger().setLevel(logging.DEBUG)
    requests_log = logging.getLogger("requests.packages.urllib3")
    requests_log.setLevel(logging.DEBUG)
    requests_log.propagate = True
    

    运行脚本后,对比curl的-vv输出,检查请求头、Content-Type、payload内容是否完全一致。

  3. 直接复制curl的payload到Python中测试,排除输入逻辑问题:
    暂时替换动态生成的payload为curl里的固定内容,验证API调用是否正常:

    json_payload = {
        "projectName": "dbdisk01",
        "siteName": "EMEA",
        "disks": [ "dbdisk01" ],
        "emailAddress": "dbinfo@somedomain.com"
    }
    

    如果这样能成功,说明问题出在用户输入的处理逻辑上,再回头检查输入读取的代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 14:47:30