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

使用Groovy代码调用ZAPI添加JIRA附件时遇到问题求助

解决ZAPI通过Groovy上传附件的异常问题

我来帮你排查下用Groovy调用ZAPI上传附件时遇到的问题——从你给出的代码片段来看,核心问题应该是请求格式没有匹配ZAPI上传附件的要求,毕竟上传文件和普通的GET/PUT JSON请求完全不是一回事。

先明确ZAPI上传附件的核心要求

ZAPI的附件上传接口要求使用multipart/form-data类型的请求,而不是你注释掉的application/json;另外,Groovy的RESTClient处理文件上传需要特定的参数格式,不能像普通接口那样传空请求头或者JSON体。

修正后的完整代码示例

你可以试试下面的代码,我把关键的认证、文件处理、请求格式都调整好了:

@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7.2')
import groovyx.net.http.RESTClient
import static groovyx.net.http.ContentType.MULTIPART

// 替换成你的JIRA/ZAPI地址
def zapiAttachmentUrl = "https://jira-XXXXXXXXXXX/rest/zapi/latest/attachment?entityId=993118&entityType=execution"
def client = new RESTClient(zapiAttachmentUrl)

// 配置JIRA认证(这里用基本认证,替换成你的用户名和API Token)
client.auth.basic("your-jira-username", "your-jira-api-token")

// 准备要上传的文本文件(替换成你的文件路径)
def targetFile = new File("/Users/xxx/your-attachment.txt")

try {
    def uploadResponse = client.post(
        contentType: MULTIPART,
        body: [
            file: [
                file: targetFile,
                contentType: "text/plain" // 文本文件的MIME类型
            ]
        ]
    )
    println "附件上传成功!响应状态码: ${uploadResponse.status}"
    println "响应详情: ${uploadResponse.data}"
} catch (Exception e) {
    println "上传失败,错误信息: ${e.message}"
    // 打印完整堆栈信息,方便排查具体问题
    e.printStackTrace()
}

关键注意点解释

  • 请求类型必须是MULTIPART:RESTClient的ContentType.MULTIPART会自动帮你设置正确的Content-Type请求头,不需要手动写
  • 文件参数格式要正确:必须把文件包装成包含file(文件对象)和contentType(对应文件的MIME类型)的Map,ZAPI才能正确识别
  • 认证不能少:一定要确保你的账号有上传附件到指定execution(执行ID:993118)的权限,JIRA现在推荐用API Token代替密码做基本认证
  • 排查异常细节:如果还是报错,一定要打印完整的堆栈信息,比如是401权限不足、400请求格式错误,还是500服务器内部错误,这些信息能快速定位问题

额外排查方向

  1. 确认entityId=993118对应的execution确实存在,且你有权限访问
  2. 检查本地文件路径是否正确,文件是否存在且有可读权限
  3. 如果你的JIRA是云版本,确认API Token是正确生成的(在JIRA个人设置里创建)

内容的提问来源于stack exchange,提问作者Jaideep Bahadur Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:27:49