首页 > 解决方案 > 转换出版商也许>

问题描述

我有以下方法

public Maybe<HttpResponse<?>> post(Publisher<CompletedFileUpload> files) {
        MultipartBody.Builder requestBody = MultipartBody.builder();
        return Flowable.fromPublisher(files).flatMap(file -> {
            requestBody
                    .addPart("file", file.getFilename(), MediaType.TEXT_PLAIN_TYPE, file.getBytes())
                    .addPart("id", "asdasdsds");
            return this.iProductClient.post(requestBody.build());
        });
    }

来自的返回类型this.iProductClient.post(requestBody.build());Maybe<HttpResponse<?>>

如何将下面的代码转换为返回Maybe<HttpResponse<?>>,目前下面的方法有错误

return Flowable.fromPublisher(files).flatMap(file -> {
            requestBody
                    .addPart("file", file.getFilename(), MediaType.TEXT_PLAIN_TYPE, file.getBytes())
                    .addPart("id", "asdasdsds");
            return this.iProductClient.post(requestBody.build());
        });

标签: javarx-javarx-java2reactivexrx-java3

解决方案


您可以在请求发送中使用collect,然后使用 flatmap:

return Flowable.fromPublisher(files)
    .collect(MultipartBody::builder, (requestBody, file) -> {
        requestBody
            .addPart("file", file.getFilename(), MediaType.TEXT_PLAIN_TYPE, file.getBytes())
            .addPart("id", "asdasdsds");
    })
    .flatMapMaybe(requestBody -> iProductClient.post(requestBody.build()))
    ;

推荐阅读