gpt4 book ai didi

c# - 在 C# 中使用 REST API 将附件发布到 Jira

转载 作者:行者123 更新时间:2023-11-30 18:33:12 25 4
gpt4 key购买 nike

我有一个问题。当我想使用 REST API 将一些附件发布到 JIRA 时,我遇到了带有 404 代码(未找到)的 Web 异常。我的方法使用 CookieContainer 来验证用户。这是我的代码:

 HttpWebResponse response;
string path = "C:\\Users\\xxxx\\Documents\\nowy.txt";
var boundary = string.Format("----------{0:N}", Guid.NewGuid());
request.CookieContainer = new CookieContainer();
foreach (Cookie c in responseCookies)
request.CookieContainer.Add(c);
request.ContentType = String.Format("multipart/form-data; boundary={0}", boundary);
request.Method = "POST";
request.Headers.Add("X-Atlassian-Token: nocheck file=@my_file.txt");
request.Headers.Add("charset", "UTF-8");
request.KeepAlive = false;

var fileContent = File.ReadAllBytes(path);

request.ProtocolVersion = HttpVersion.Version10;
using(var streamWriter = new StreamWriter(request.GetRequestStream()))
{
streamWriter.Write(fileContent);
}


response = request.GetResponse() as HttpWebResponse;
Stream s = response.GetResponseStream();

我使用了很多支持,但都解决了我的问题。那你有什么想法吗?

编辑 1

现在 Jira 返回 200 代码但没有添加附件..你能告诉我我的代码有什么问题吗?

public void AddAtachment(CookieCollection responseCookies)
{
request.CookieContainer = new CookieContainer();
foreach (Cookie c in responseCookies)
request.CookieContainer.Add(c);
Console.Write(request.RequestUri);
HttpWebResponse response;
string fileUrl = @"C:\Users\xxxx\Documents\nowy.txt";
var boundary = string.Format("----------{0:N}", Guid.NewGuid());


request.ContentType = String.Format("multipart/form-data; boundary={0}", boundary);
request.Method = "POST";
request.Headers.Add("X-Atlassian-Token", "nocheck");

MemoryStream postDataStream = new MemoryStream();
StreamWriter postDataWriter = new StreamWriter(postDataStream);

postDataWriter.Write("\r\n--" + boundary + "\r\n");
postDataWriter.Write("Content-Disposition: form-data;"
+ "@file=\"{0}\";"
+ "filename=\"{1}\""
+ "\r\nContent-Type: {2}\r\n\r\n",
"myFile",
Path.GetFileName(fileUrl),
Path.GetExtension(fileUrl));
postDataWriter.Flush();

FileStream fileStream = new FileStream(fileUrl, FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = fileStream.Read(buffer, 0, buffer.Length)) != 0)
{
postDataStream.Write(buffer, 0, bytesRead);
}

fileStream.Close();

postDataWriter.Write("\r\n--" + boundary + "--\r\n");
postDataWriter.Flush();

request.ContentLength = postDataStream.Length;

using (Stream s = request.GetRequestStream())
{
postDataStream.WriteTo(s);
}

postDataStream.Close();

response = request.GetResponse() as HttpWebResponse;
StreamReader responseReader = new StreamReader(response.GetResponseStream());
string reply = responseReader.ReadToEnd();
Console.Write(reply);
}

最佳答案

How to POST attachment to JIRA using REST API? 可能重复.

据我所知,您的问题出在 Content-Disposition header 中。 RFC-1867期望表单数据名称是 "file" 而不是别的。有关详细信息,请查看 Atlassian 论坛上的帖子:https://answers.atlassian.com/questions/104822/jira-rest-api-attachment-incoherent-result .

您可以看看我在重复帖子中提供的答案:https://stackoverflow.com/a/18489214/424059

关于c# - 在 C# 中使用 REST API 将附件发布到 Jira,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17726564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com