我正在开发一个应用程序,使用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,真的吗?哈,不客气! :) –