Я могу отправить вложение одного файла через 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, который работает.
Ожидается, что он должен работать для любого количества вложений.