我正在開發一個應用程序,使用Retrofit 2向API請求。這個API是ASP.NET,它是用gzip和編碼壓縮和解爲Base64,如下面的代碼:修改響應主體改造2.2攔截器
private static string Compress(string conteudo)
{
Encoding encoding = Encoding.UTF8;
byte[] raw = encoding.GetBytes(conteudo);
using (var memory = new MemoryStream())
{
using (GZipStream gzip = new GZipStream(memory, CompressionMode.Compress, true))
{
gzip.Write(raw, 0, raw.Length);
}
return Convert.ToBase64String(memory.ToArray());
}
}
private static string Decompress(string conteudo)
{
Encoding encoding = Encoding.UTF8;
var gzip = Convert.FromBase64String(conteudo);
using (GZipStream stream = new GZipStream(new MemoryStream(gzip), CompressionMode.Decompress))
{
int size = gzip.Length;
byte[] buffer = new byte[size];
using (MemoryStream memory = new MemoryStream())
{
int count = 0;
do
{
count = stream.Read(buffer, 0, size);
if (count > 0)
{
memory.Write(buffer, 0, count);
}
}
while (count > 0);
return encoding.GetString(memory.ToArray());
}
}
}
現在,我需要在我的Android應用程序做的就是從改造的響應,從解碼Base64並解壓縮。我試圖用Interceptor
來做,但我沒有成功。
這是我從服務H4sIAAAAAAAEACspKk0FAI1M/P0EAAAA
收到的回覆,解碼和解壓縮回復,我們有true
。
是否有人知道該怎麼辦呢?
再次,你幫了我很多,非常感謝你:再次d – jackcar
@jackcar,真的嗎?哈,不客氣! :) –