我需要通过出站网关压缩 HTTP 请求。是否有用于 Spring Integration 的 GZIPInterceptor 或其他东西?
最佳答案
没有任何开箱即用的东西,但很容易添加一对变压器来压缩有效负载,然后再发送到网关......
@Bean
@Transformer(inputChannel = "gzipIt", outputChannel = "gzipped")
public byte[] gzip(byte[] in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPOutputStream gzOut = new GZIPOutputStream(out);
FileCopyUtils.copy(in, gzOut);
return out.toByteArray();
}
还有一个要解压...
@Bean
@Transformer(inputChannel = "gUnzipIt", outputChannel = "gUnzipped")
public byte[] gUnzip(byte[] in) throws IOException {
ByteArrayOutputStream out = new ByteArrayOutputStream();
GZIPInputStream gzIn = new GZIPInputStream(new ByteArrayInputStream(in));
FileCopyUtils.copy(gzIn, out);
return out.toByteArray();
}
您也可以在 ClientHttpRequestInterceptor
中执行此操作。
另请参阅下面 Artem 评论中的链接。
关于java - Spring 集成 GZIP HTTP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43484392/