You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用RestAssured编写Java代码向JIRA上传附件?

使用RestAssured实现JIRA附件上传的正确方式

我来帮你把给定的CURL命令转换成对应的RestAssured Java代码,先拆解下CURL里的关键配置,再一步步对应到代码中:

从CURL到RestAssured的参数映射

先理清楚你提供的CURL命令里每个部分的作用,这样能明确代码里需要配置的项:

  • -u admin:admin:JIRA API需要的基本身份认证
  • -H "X-Atlassian-Token: nocheck":JIRA要求的防CSRF请求头,必须添加否则会返回403错误
  • -F "file=@myfile.txt":Multipart表单的文件参数,JIRA API要求参数名必须是file
  • 最后URL:JIRA附件上传的接口地址,对应你的issue key

完整的RestAssured代码示例

import io.restassured.RestAssured;
import java.io.File;

public class JiraAttachmentUploader {
    public static void main(String[] args) {
        // 配置JIRA实例的基础地址
        RestAssured.baseURI = "http://localhost:8181";
        
        // 准备要上传的文件
        File targetFile = new File("/home/xyz/assume.log");
        
        RestAssured.given()
            // 添加JIRA认证信息
            .auth().preemptive().basic("admin", "admin")
            // 必须添加的JIRA专属请求头
            .header("X-Atlassian-Token", "nocheck")
            // 指定Multipart文件参数,注意参数名是"file"
            .multiPart("file", targetFile)
        .when()
            // 发送POST请求到对应issue的附件接口
            .post("/rest/api/2/issue/AT-2/attachments")
        .then()
            // 验证请求成功(状态码200)
            .statusCode(200)
            // 打印响应体方便调试,也可以根据需求自定义验证规则
            .log().body();
    }
}

你之前代码的问题点

对比你的尝试代码,主要有几个关键缺失:

  • 没有添加身份认证:JIRA API需要验证权限,缺失会导致未授权错误
  • 缺少X-Atlassian-Token请求头:这是JIRA上传附件的强制要求
  • Multipart参数名错误:你用了file2,但JIRA API只识别file作为文件参数名

额外调试提示

  • 确保文件路径正确,且程序有读取该文件的权限
  • 如果JIRA用HTTPS,记得把baseURI改成https://开头
  • 可以根据JIRA返回的响应结构,添加更具体的验证,比如检查返回的附件名称、ID等

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

火山引擎 最新活动