У меня есть PHP-скрипт, который отправляет мне такую информацию:
$output = base64_encode(gzencode('Hallo Welt',9));
Я получаю это из HTTP-запроса в строку.
Вот что я получаю в VB.NET:
H4sIAAAAAAACC/NIzMnJVwhPzSkBAHUUKFAKAAAA
Каждая попытка распаковать это с помощью System.IO.Compression.GZipStream
просто не похоже на работу.
Кто-нибудь может мне помочь, пожалуйста! Заранее спасибо.
Как я уже писал в своем комментарии: PHP-код сначала сжимает ваш текст с помощью GZip, но затем также преобразует полученные байты в строку base64. Прежде чем вы сможете распаковать это, вам нужно обратить вспять процесс base64. Вот как это работает в VB:
'Convert base64 string to byte array
Dim bytes As Byte() = System.Convert.FromBase64String("H4sIAAAAAAACC/NIzMnJVwhPzSkBAHUUKFAKAAAA")
'Standard GZipStream code for decompression
Using ms As New IO.MemoryStream(bytes)
Using gzs As New System.IO.Compression.GZipStream(ms, IO.Compression.CompressionMode.Decompress)
Using rdr As New IO.StreamReader(gzs)
Console.WriteLine(rdr.ReadToEnd)
End Using 'rdr
End Using 'gzs
End Using 'ms
Console.ReadKey()
Он снова создает вашу входную строку «Hallo Welt».
Преобразование байтового массива в base64 при отправке его по текстовой системе является хорошей идеей, поскольку у вас нет проблем с кодировкой текста и непечатными символами. Base64 использует печатаемое подмножество символов для представления всех значений от 0 до 255, что делает его довольно идеальным для отправки.
Других решений пока нет …