Как отправить данные из многочастной формы с помощью вершины webclient (io.vertx.ext.web.client.WebClient)? - PullRequest
0 голосов
/ 21 июня 2019

Я могу отправить вложение одного файла через io.vertx.ext.web.client.WebClient, но не могу сделать это для нескольких файлов.

Я просмотрел документы, исследовал некоторые методы WebClient, добавил значение boundary в заголовок при создании запроса, но не повезло.Я сделал тот же запрос через почтальона, и он работал.

Этот код работает.Он имеет одно вложение:

MultipartForm multipartForm = MultipartForm.create();
        multipartForm.attribute("description", "test-ticket-description-50");
        multipartForm.attribute("subject", "subject");
        multipartForm.attribute("unique_external_id", "1");
        multipartForm.attribute("status", "2");
        multipartForm.attribute("priority", "2");
        multipartForm.attribute("cc_emails[]","abc@gmail.com");
        multipartForm.attribute("cc_emails[]","cde@gmail.com");
        multipartForm.binaryFileUpload("attachments[]", "Screenshot.png", "/Users/harsit.gupta/Desktop/Screenshot 2019-06-18 at 5.25.56 PM.png", "image/png");

Этот код не работает.Он имеет несколько вложений:

MultipartForm multipartForm = MultipartForm.create();
        multipartForm.attribute("description", "test-ticket-description-50");
        multipartForm.attribute("subject", "subject");
        multipartForm.attribute("unique_external_id", "1");
        multipartForm.attribute("status", "2");
        multipartForm.attribute("priority", "2");
        multipartForm.attribute("cc_emails[]","abc@gmail.com");
        multipartForm.attribute("cc_emails[]","cde@gmail.com");
        multipartForm.binaryFileUpload("attachments[]", "Screenshot.png", "/Users/harsit.gupta/Desktop/Screenshot 2019-06-18 at 5.25.56 PM.png", "image/png");
        multipartForm.binaryFileUpload("attachments[]", "ScreenshotPM.png", "/Users/harsit.gupta/Desktop/Screenshot 2019-06-21 at 3.47.12 PM.png", "image/png");

Оба MultipartForm отправляются с использованием WebClient как:

webClient.postAbs(url)
                //.putHeader("Content-type", "multipart/form-data")
                .putHeader("ContentType", "multipart/form-data")
                .putHeader(Constants.AUTHORIZATION, freshdeskAuthHandler)
                .timeout(fresdeskTimeout)
                .sendMultipartForm(multipartForm, httpResponseAsyncResult -> {
                    getFreshdeskResponse(completableFuture, action, httpResponseAsyncResult);
                });

Для первых код состояния равен 200, а для последних код состояния 401.Я также попытался переименовать attachment[] в attachment1[] и attachment2[], но это не сработало.Также добавление любого из вложенных файлов работало, это означает, что нет проблем с файлами.Ребята из Fresh Desk дали этот код в java, который работает.

Ожидается, что он должен работать для любого количества вложений.

...