RestSharp. Отправка POST запроса с телом form-data, состоящим из нескольких файлов и текстовых полей

184
25 октября 2021, 07:10

Подскажите, пожалуйста, как я могу отправить POST запрос с телом form-data, состоящим из нескольких файлов и текстовых полей используя RestSharp?

Тело которое нужно отправить

Когда я отправляю только один файл, таким способом

public void uploadFile()
    {
        var client = new RestClient(baseUrl) 
        var request = new RestRequest("/import", Method.POST);
        request.AlwaysMultipartFormData = true;
        request.AddHeader("Content-Type", "multipart/form-data");
        request.AddHeader("Authorization", "Bearer " + token);
        request.AddFile("nameFileField", "D:/files/file.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        IRestResponse response = client.Execute(request);
        Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
    }

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

public void uploadFile()
    {
        var client = new RestClient(baseUrl) 
        var request = new RestRequest("/import", Method.POST);
        request.AlwaysMultipartFormData = true;
        request.AddHeader("Content-Type", "multipart/form-data");
        request.AddHeader("Authorization", "Bearer " + token);
        request.AddFile("nameFileField1", "D:/files/file1.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        request.AddFile("nameFileField2", "D:/files/file2.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        request.AddFile("nameFileField3", "D:/files/file3.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        request.AddFile("nameFileField4", "D:/files/file4.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
        request.AddParameter("startDate", "10/28/2019", "multipart/form-data", ParameterType.RequestBody);
        request.AddParameter("endtDate", "10/30/2019", "multipart/form-data", ParameterType.RequestBody);
        IRestResponse response = client.Execute(request);
        Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
    }
  • запрос возвращает код 500.

В Content-Type "boundary=----WebKitFormBoundarydCuaQZ6nmzyAWNQL" подставлял, не помогает.

Аналогичный запрос, при составлении в postman - отрабатывает корректно, но при копировании из postman кода запроса:

request.AddHeader("content-type", "multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW");
request.AddParameter("multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW", "------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"File1\"; filename=\"File1.xlsx\"\r\nContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"File2\"; filename=\"File2.xlsx\"\r\nContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"File3\"; filename=\"File3.xlsx\"\r\nContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"File4\"; filename=\"File4.xlsx\"\r\nContent-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\r\n\r\n\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"startDate\"\r\n\r\n10/28/2019\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW\r\nContent-Disposition: form-data; name=\"endDate\"\r\n\r\n10/30/2019\r\n------WebKitFormBoundary7MA4YWxkTrZu0gW--", ParameterType.RequestBody);

Запрос возвращает код 200, но файлы не отправляются.

Подскажите, пожалуйста, как можно решить данную проблему, что бы и запрос 200 вернул и файлы отправились?

(заранее приношу извинения если вопрос глупый, но решения проблемы к сожалению не нашёл. Буду очень признателен за помощь.)

READ ALSO
Обход XML документа

Обход XML документа

Подскажите пожалуйста каким образом в XML документе найти узел и его дочерние элементы и при этом вернуть объект класса соответствующий этим...

172
Связь между таблицами, привязка к DataGridView

Связь между таблицами, привязка к DataGridView

Есть метод для связи между таблицами и биндинг к гриду

161
Как вернуть запись из текстового столбца как массив

Как вернуть запись из текстового столбца как массив

В бд есть поле типа longtext, в него записан массив такого типа

254
Ошибка в MySQL Workbench с RowCount

Ошибка в MySQL Workbench с RowCount

Значение 0 недопустимо для RowCountRowCount должен быть больше или равен 1

256