如何使用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




