如何解决Spring WebClient 访问 Trailer 标头
定义的预告片标题https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Trailer 和 RFC7230
来自 Web API,该 API 以分块传输编码提供未知数量(1k ...10M JSON 记录)的 json 数据流,以及流末尾的一些附加预告片标头。
为了允许以流方式进行处理,我们使用 spring-webflux ,版本 5.2.9,WebClient,但我无法找到从 WebClient 检索此预告片标头的方法。
当前测试代码我使用的是这样的:
Iterator<JsonNode> x = client
.get()
.uri("http://localhost:8080/api/v1/sources/chunked")
.header(HttpHeaders.TRAILER,"x-stream-records")
.accept(MediaType.APPLICATION_STREAM_JSON)
.exchange()
.map(clientResponse -> {
logger.info("{}",clientResponse.statusCode());
logger.info("{}",clientResponse.headers().asHttpHeaders());
return clientResponse.bodyToFlux(JsonNode.class);
})
.block(Duration.ofSeconds(400)).toIterable().iterator();
long cnt=0;
while (x.hasNext()) {
logger.info("{}",x.next());
cnt++;
}
logger.info("done: {}",cnt);
目标是允许访问由 api 设置的预告片 x-stream-records=,以便我们可以验证发送/检索的数据量。
用 bodyToFlux(String.class) 替换 bodyToFlux(JsonNode.class) 将额外显示 1 个 EMPTY 字符串记录。所以我怀疑内容以某种方式存在,但此时尚未“处理”。
审查 BodyExtractors 似乎不包括任何允许检索这些预告片标头的提取器。
那么我们如何检索这个...?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。