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

Groovy用HttpURLConnection提交Python代码返回400 Bad Request问题求助

问题根因

你遇到的400错误完全是JSON格式非法导致的,核心问题有2个:

  1. 读取Python脚本的方法错误
    f.readLines().toString() 会将读取到的每行内容拼接为[行1, 行2, 行3...]格式的列表字符串,不是原始的Python脚本内容,额外增加的方括号、逗号直接破坏了内容结构。
  2. 手动拼接JSON未做特殊字符转义
    你直接把Python脚本内容插入JSON字符串,脚本中的换行符、单双引号、缩进等特殊字符没有做JSON标准转义,会直接打乱整个JSON的结构,服务端解析时就会抛出你收到的语法错误。Python的requests库会自动处理JSON转义,所以用Python提交不会出错。
解决方案

按照以下两步修改代码即可解决:

1. 正确读取Python脚本内容

直接读取文件的完整原始文本,指定UTF-8编码避免乱码:

// 替换原有读取文件的代码
def content = new File("out.py").getText("UTF-8")

2. 使用Groovy内置JsonBuilder生成合法JSON

不要手动拼接JSON字符串,用JsonBuilder自动处理所有特殊字符转义,生成符合标准的payload:

import groovy.json.JsonBuilder

// 替换原有手动拼接payload的代码
def jsonBuilder = new JsonBuilder()
jsonBuilder {
    Definition {
        name("filename")
        modifiedBy("user_name")
        active(true)
        systemId("filename_sid")
        script(content) // 直接传入原始脚本内容,自动转义
    }
}
String payload = jsonBuilder.toString()

修改完成后直接用你原来的请求逻辑提交即可,无需修改其他HttpURLConnection相关代码。如果需要调试,可以打印生成的payload字符串,确认JSON格式完全符合规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 13:24:05