Воспроизвести приложение | Как передать FilePart другому запросу - PullRequest
1 голос
/ 21 января 2020

в java Воспроизвести приложение, которое я выставил. Поместите запрос файла, и я хочу использовать эту FilePart в другом запросе от wsClient:

public CompletionStage<String> upload() {
        Http.RequestBody body = request().body();
        Http.MultipartFormData formData = body.asMultipartFormData();
        Http.MultipartFormData.FilePart<File> file = formData.getFile("file");

        return wsClient.url("fake")
                .setContentType("multipart/form-data")
                .post(Source.single(b))
                .thenApplyAsync(wsResponse -> {
                        return wsResponse.getBody();
                })
                .exceptionally(throwable -> throwable.getMessage());
    }

И я получил ответ: 'java .lang.UnsupportedOperationException : Неподдерживаемый класс детали '

Спасибо за помощь

1 Ответ

0 голосов
/ 28 января 2020

Для этой конечной точки сообщения потребуется тело типа:

Source<? super Http.MultipartFormData.Part<Source<ByteString, ?>>, ?>

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

List<Http.MultipartFormData.Part> partList = new ArrayList<>();
Source<ByteString, ?> file = FileIO.fromFile(filePart.getFile());
Http.MultipartFormData.FilePart<Source<ByteString, ?>> filePart = new Http.MultipartFormData.FilePart<>(file.getKey(), file.getFilename(), filePart.getContentType(), file);
partList.add(filePart);

Затем вы можете предоставьте это как тело сообщения, используя следующее:

.post(Source.from(Collections.unmodifiableList(partList)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...