今天在上班的时候遇到个问题,移动端要求我们用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());
代码我就不讲了,看的懂的人看!看不懂的也没办法。。。