restsharp код почтальона многочастный почтовый запрос отправка изображений 0kb в JIRA - PullRequest
0 голосов
/ 18 октября 2019

Я работаю над публикацией изображений в тикет JIRA через их оставшийся API (требуется многочастная публикация с пользовательскими заголовками). Все работает, когда в почтальоне, код 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);все еще не работает.

Это ответ от сервера: введите описание изображения здесь

1 Ответ

0 голосов
/ 21 октября 2019

Оказывается, почтальон добавляет кучу дополнительных вещей в свой автоматически сгенерированный код, в любом случае генерация кода на почтальоне должна быть исправлена, вот как я исправил мой:

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);
...