栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何解压通量 (以及如何写一个)?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何解压通量 (以及如何写一个)?

public class HttpResponseHeadersHandler extends ChannelInboundHandlerAdapter {
private final HttpHeaders httpHeaders;

    @Override    public void channelRead(ChannelHandlerContext ctx, Object msg) {        if (msg instanceof HttpResponse &&     !HttpStatus.resolve(((HttpResponse) msg).status().pre()).is1xxInformational()) { HttpHeaders headers = ((HttpResponse) msg).headers(); httpHeaders.forEach(e -> {     log.warn("Modifying {} from: {} to: {}.", e.getKey(), headers.get(e.getKey()), e.getValue());     headers.set(e.getKey(), e.getValue()); });        }        ctx.fireChannelRead(msg);    }}

然后,我创建一个和

ClientHttpConnector
一起使用
WebClient
afterNettyContextInit
添加处理程序:

ctx.addHandlerLast(new ReadTimeoutHandler(readTimeoutMillis, TimeUnit.MILLISECONDS));ctx.addHandlerLast(new Slf4JLoggingHandler());if (forceDecompression) {    io.netty.handler.prec.http.HttpHeaders httpHeaders = new ReadonlyHttpHeaders( true, CONTENT_ENCODING, GZIP, CONTENT_TYPE, APPLICATION_JSON    );    HttpResponseHeadersHandler headersModifier = new HttpResponseHeadersHandler(httpHeaders);    ctx.addHandlerFirst(headersModifier);}ctx.addHandlerLast(new HttpContentDecompressor());

当然,对于未经GZIP压缩的响应,这将失败,因此,我

WebClient
仅在特定的用例中使用此的实例,在这种情况下,我确定响应是压缩的。

编写很容易:Spring有一个

ResourceEnprer
,因此
InputStream
可以简单地转换为
InputStreamResource
,瞧!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/574214.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号