今天在上班的時候遇到個問題,移動端要求我們用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());
代碼我就不講了,看的懂的人看!看不懂的也沒辦法。。。