将 Publisher<CompletedFileUpload> 转换为 Maybe<HttpResponse<?>>

问题描述

我有以下方法

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","asdasdsds");
            return this.iProductClient.post(requestBody.build());
        });

解决方法

您可以在请求发送中使用 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()))
    ;