APIにリクエストするためにRetrofit 2を使用してアプリケーションを開発しています。このAPIは、ASP.NETであり、それは以下のコードのように、Base64でのgzipとエンコーディングでビュンされています。私は私のAndroidアプリで行う必要があることは、レトロフィットからの応答を得るからデコードされ、今レスポンスボディを改造する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());
}
}
}
Base64を開き、解凍します。私はInterceptor
を使ってやろうとしましたが、成功しませんでした。
これは私がサービスH4sIAAAAAAAEACspKk0FAI1M/P0EAAAA
から受け取った返答で、応答の解読と解凍は、true
です。
誰かがそれを行う方法を知っていますか?
もう一度あなたは私をたくさん助け、そんなにありがとう:D – jackcar
@jackcarをもう一度、本当に?ハ、歓迎です! :) –