Spring 集成 GZIP HTTP 请求

Spring Integration GZIP HTTP requests

我需要通过出站网关压缩 HTTP 请求。是否有 GZIPInterceptor 用于 Spring 集成或其他东西?

没有开箱即用的东西,但是在发送到网关之前添加一对转换器来压缩有效载荷就足够了...

@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 评论中的 link。