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

自动化代码调用Rally API上传附件失败:权限错误求助

解决Rally API上传附件时“未授权创建AttachmentContent”的问题

看起来你遇到的问题很典型——手动操作正常、其他API调用(比如创建测试用例)也没问题,但唯独上传附件时触发权限错误,大概率是API请求的构造细节出了问题,而不是真的权限不足。我来帮你拆解可能的原因和解决方案:

1. 首先排查字段名的大小写错误

你代码里写的"ProjecT"是大小写错误的!Rally的API字段名是严格区分大小写的,正确的字段名应该是"Project"。这个小错误会导致系统无法识别你指定的项目上下文,进而触发权限校验失败(因为系统不知道该用哪个项目的权限规则)。

2. 遵循Rally附件创建的正确流程

Rally创建附件需要分两步走,很多人会忽略这个流程细节:

  • 第一步:创建AttachmentContent(存储文件的实际内容)
  • 第二步:创建Attachment(关联AttachmentContent和目标工件,比如测试用例)

修正后的代码示例(Java)

import com.google.gson.JsonObject;
import java.util.Base64;
import java.nio.file.Files;
import java.nio.file.Paths;

// 1. 读取文件并转成Base64编码(这一步很重要!)
byte[] fileBytes = Files.readAllBytes(Paths.get("path/to/your/file.pdf"));
String base64Content = Base64.getEncoder().encodeToString(fileBytes);

// 2. 创建AttachmentContent请求体
JsonObject attachmentContent = new JsonObject();
attachmentContent.addProperty("Project", projectRef); // 修正字段名大小写
attachmentContent.addProperty("Name", "your-attachment-filename.pdf"); // 必填:文件名
attachmentContent.addProperty("Content", base64Content); // 必填:Base64编码的文件内容

// 发送POST请求到 Rally API的 /attachmentcontent/create 端点,获取返回的AttachmentContent ref
String attachmentContentRef = sendPostRequest("https://rally1.rallydev.com/slm/webservice/v2.0/attachmentcontent/create", attachmentContent);

// 3. 创建Attachment请求体,关联到目标测试用例
JsonObject attachment = new JsonObject();
attachment.addProperty("Project", projectRef);
attachment.addProperty("Artifact", testCaseRef); // 关联你要附加的测试用例ref
attachment.addProperty("AttachmentContent", attachmentContentRef); // 关联刚才创建的AttachmentContent

// 发送POST请求到 /attachment/create 端点完成上传
sendPostRequest("https://rally1.rallydev.com/slm/webservice/v2.0/attachment/create", attachment);

3. 额外的排查点

  • 认证上下文:虽然你能创建测试用例,但还是要确认请求头里的认证信息(比如API Key的Authorization: ApiKey <your-key>或者ZSESSIONID)是否和手动操作使用的账号一致。
  • 工作区上下文:如果你的项目属于特定工作区,可以在请求头里添加X-RallyWorkspace: <workspace-ref>来明确指定,避免系统自动选择错误的上下文。
  • 文件编码:确保文件内容是标准的Base64编码,不要包含换行或额外字符,否则会导致AttachmentContent创建失败,进而触发权限错误(系统有时候会把格式错误伪装成权限问题)。

为什么手动上传正常?

因为手动操作时,Rally的前端会自动帮你处理这两步流程,并且正确设置所有字段和编码,而自动化代码需要你手动实现这些细节。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:20:58