reactor-netty - 如何在 Reactor-Netty 中获取压缩响应的长度?
问题描述
httpClient.post().uri(getSearchUrl())
.send(Mono.just(Unpooled.wrappedBuffer(bytes)))
.responseSingle((resp, buf) -> {
return buf;
})
.map(ByteBuf::retain)
.map(byteBuf -> {
response.setResponseBodyStream(new ByteBufInputStream(byteBuf, true));
return response;
});
在该方法responseSingle
中,响应已经未压缩。那么我怎样才能得到压缩响应的长度呢?谢谢。
解决方案
检查响应标头。您可能有标题“Content-Length”,它应该告诉您响应大小。
否则,您可以将主体作为 ByteArrayResource 获取并检查字节数组的大小。
.exchange()
.flatMap(clientResponse -> clientResponse.bodyToMono(ByteArrayResource.class)
.flatMap(responseBodyByteArray -> checkSize(responseBodyByteArray.getByteArray().length))
)
推荐阅读
- ruby-on-rails - 下拉菜单不选择型号
- discrete-mathematics - SAGE 如何使用 sagemath 在这个等式中找到 e?
- wso2 - wso2/wso2ei-integrator:OpenShift 上的 6.5.0-centos
- python - tf-2.0-alpha 使用 ParameterServer 策略运行分布式 keras 时出现问题
- sql - dplyr中的“NOT IN”sql命令使用来自不同查询的结果
- java - 计算总的右转和左转
- python - 如何在 django 中运行填充文件的 VSCode 中修复“无法导入 'faker' pylint(import-error)”
- php - 使用会话变量检查数据库中行的函数不起作用
- react-native - 有没有人成功使用过customMapStyle?
- lua - 是否可以在 lua 中对河内塔进行适当的尾声?