微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spring WebClient 访问 Trailer 标头

如何解决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 举报,一经查实,本站将立刻删除。