我正在尝试将数据从 HTTP (GET) 响应流式传输到另一个 HTTP (POST) 请求。使用旧的 HttpURLConnection,我将获取响应 OutputStream,将部分读入缓冲区并将它们写入请求 InputStream。
通过创建我自己的 Publisher,我已经设法在 Java 11 中对 HttpClient 执行相同的操作,该 Publisher 在 POST 中用于编写请求正文。GET 请求有一个BodyHandler
withofByteArrayConsumer
将块发送到自定义发布者,然后它自己将块发送到订阅 HTTP POST 请求。
但我认为这不是正确的方法,因为看起来 API 中有一些东西看起来可以直接完成而无需自己实现发布者和订阅者。
有HttpResponse.BodyHandlers.ofPublisher()
一个返回一个Publisher<List<ByteBuffer>
我可以用于 HTTP GET 请求的。不幸的是,对于我的 POST 请求,有HttpRequest.BodyPublishers.fromPublisher
一个期望值Publisher<? extends ByteBuffer>
,因此 fromPublisher 似乎只适用于拥有完整 ByteBuffer 的发布者,而不适用于为部分数据发送多个 ByteBuffer 的发布者。
我是否错过了一些能够将 BodyPublisher 从一个请求连接到另一个请求的东西?
墨色风雨
相关分类