restsharp邮递员代码多部分发布请求,向JIRA发送0kb图片

时间:2019-10-18 09:52:08

标签: c# rest postman restsharp jira-rest-api

我正在通过其剩余API将图像发布到JIRA票证上(需要包含自定义标题的多部分帖子)。 在postman中时一切正常,它生成的restsharp代码如下:

var client = new RestClient("jira link here");
var request = new RestRequest(Method.POST);
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Connection", "keep-alive");
request.AddHeader("Content-Length", "31321");
request.AddHeader("Cookie", "atlassian.xsrf.token=BMR0-T49H-M7PK-ZG4J_4f2a8b5df5dfd91780d88b5ea26f8de0_lin; JSESSIONID=CE20BD6E7D3FABA7A0E8F9403907CD97");
request.AddHeader("Accept-Encoding", "gzip, deflate");
request.AddHeader("Host", "classified");
request.AddHeader("Postman-Token", "b5f2a773-532a-47b7-83bd-36c3cce16b55,d07661e4-abf5-408e-be59-0360938b6b77");
request.AddHeader("Cache-Control", "no-cache");
request.AddHeader("Accept", "*/*");
request.AddHeader("User-Agent", "PostmanRuntime/7.18.0");
request.AddHeader("Authorization", "classified");
request.AddHeader("X-Atlassian-Token", "no-check");
request.AddHeader("Content-Type", "multipart/form-data");
request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"file\"; filename=\"1280px-Microsoft_Azure_Logo.svg - Copy.png\"\r\nContent-Type: image/png\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

我怀疑问题可能不是图像的完整路径,尝试添加路径,现在它正在发布图像,但是图像为空白,0kb。发布到JIRA时,图像名称正确。

图像似乎正确,但名称正确的空白。

我也尝试过包含request.addFile(“ x”,@ path); 仍然不起作用。

这是服务器的响应: enter image description here

1 个答案:

答案 0 :(得分:0)

事实证明,邮递员在其自动生成的代码中添加了很多额外的东西,无论如何,邮递员的代码生成都需要修复,这就是我修复我的问题的方式:

RestClient restClient = new RestClient("link here");
            RestRequest restRequest = new RestRequest("/attachments");
            restRequest.RequestFormat = DataFormat.Json;
            restRequest.Method = Method.POST;
            restRequest.AddHeader("Content-Length", int.MaxValue.ToString());
            restRequest.AddHeader("Authorization", "secret");
            restRequest.AddHeader("X-Atlassian-Token", "no-check");

            restRequest.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
            restRequest.AddHeader("Content-Type", "multipart/form-data");
            restRequest.AddFile("file", path);

            var response = restClient.Execute(restRequest);