如何在 C# 中使用 JIRA REST API 和 HttpWebRequest 将附件发布到 JIRA?
从/rest/api/2/issue/{issueIdOrKey}/attachments 下的文档中:
邮政
为问题添加一个或多个附件。
该资源需要一个多部分的帖子。media-type multipart/form-data 在 RFC 1867 中定义。大多数客户端库都有使处理多部分帖子变得简单的类。例如,在 Java 中,Apache HTTP 组件库提供了一个 MultiPartEntity,它使得提交多部分 POST 变得简单。
为了防止 XSRF 攻击,因为这个方法接受 multipart/form-data,所以它上面有 XSRF 保护。这意味着您必须在请求中提交 X-Atlassian-Token: nocheck 的标头,否则将被阻止。
包含附件的 multipart/form-data 参数的名称必须是“file”
上传名为“myfile.txt”的文件以发出 REST-123 的简单示例:
curl -D- -u admin:admin -X POST -H "X-Atlassian-Token: nocheck" -F "file=@myfile.txt" http://myhost.test/rest/api/2/issue/TEST -123/附件
我有
foreach (JIRAAttachments attachm in attachments.attachments)
{
request = HttpWebRequest.Create(
logInformation.GetUri() + "/rest/api/2/issue/" + key + "/attachments"
) as HttpWebRequest;
request.Headers.Add("Authorization: Basic " + logInformation.GetEncodeAuthentication());
request.Method = "POST";
request.ContentType = "multipart/form-data";
request.Headers.Add("X-Atlassian-Token: nocheck file=@" + Path.GetFullPath(@"..\Attachments\" + attachm.filename));
request.KeepAlive = true;
request.Proxy = wp;
response = (HttpWebResponse)request.GetResponse();
Stream s = response.GetResponseStream();
FileStream fs = new FileStream(Path.GetFullPath(@"..\Attachments\" + attachm.filename), FileMode.Open);
byte[] write = new byte[256];
int count = fs.Read(write, 0, write.Length);
while (count > 0)
{
s.Write(write, 0, count);
count = fs.Read(write, 0, write.Length);
}
fs.Close();
s.Close();
response.Close();
}
但它返回一个 404 错误...