如何在 webApi 当中接收 Gzip 压缩或者加密后的 请求消息内容!

时间:2023-01-16 18:13:01

今天在上班的时候遇到个问题,移动端要求我们用GZIP加密。当时一想着多简单,但是在做的时候发现个问题。

就是移动端Post到 服务端的数据也是经过 Gzip的,并不是单一的像网站那样只针对网页进行 压缩。

下面是我的处理办法:

重写 :DelegatingHandler抽象类

protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
{
Stream stream = request.Content.ReadAsStreamAsync().Result;
Encoding encoding = Encoding.UTF8;
stream.Position = 0;

request.Content = new StreamContent(new GZipStream(stream, CompressionMode.Decompress));
request.Content.Headers.Remove("Content-Type");
request.Content.Headers.Add("Content-encoding", "gzip");
request.Content.Headers.Add("Content-Type", "application/json;charset=UTF-8");

return base.SendAsync(request, cancellationToken);
}

//最后将上面写好的消息拦截类 添加到MessageHandlers里面完事

GlobalConfiguration.Configuration.MessageHandlers.Add(new  MessageHandler());

代码我就不讲了,看的懂的人看!看不懂的也没办法。。。