.net — Отправка GZipStream в PHP не удалась

Я пытаюсь опубликовать JSON, используя GZipStream для PHP, но я не уверен, как спустить его на стороне PHP. Вот функция для сжатия:

public static string Compress( string text) {
var buffer = Encoding.UTF8.GetBytes(text);
var memoryStream = new MemoryStream();
using (var stream = new GZipStream(memoryStream, CompressionMode.Compress, true)) {
stream.Write(buffer, 0, buffer.Length);
}
memoryStream.Position = 0;
var compressed = new byte[memoryStream.Length];
memoryStream.Read(compressed, 0, compressed.Length);
var gZipBuffer = new byte[compressed.Length + 4];
Buffer.BlockCopy(compressed, 0, gZipBuffer, 4, compressed.Length);
Buffer.BlockCopy(BitConverter.GetBytes(buffer.Length), 0, gZipBuffer, 0, 4);
return Convert.ToBase64String(gZipBuffer);
}

Это называется так:

request.Headers.Add("Content-Encoding", "gzip");
request.Headers.Add(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
postData = Compress(JsonConvert.SerializeObject(incomingData));
byteArray = Encoding.UTF8.GetBytes(postData);
dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();

На стороне PHP я делаю это, чтобы получить его:

<?PHP
file_put_contents('test.txt', file_get_contents('php://input'));
file_put_contents('test2.txt', gzuncompress('php://input'));
?>

В моем журнале ошибок Apache я получаю это:

PHP Warning:  gzdecode(): data error in /var/www/html/gzip.php on line 3

и в test.txt я получаю это:

0QAAAB+LCAAAAAAABAAdjsEKgzAQRH9lycWLlfbquVLoRWntqelhiYsGZJNuorUU/70htzcPZhj102rAiFrVz4SNiJOWOxwpGa06F+I1OO7dnWQlgQM0myEfrePEvXxB6L1QiNWF4o2CdxxStdTqTBHtHPLMKZs8nvODafNkIg1gJhRMJEBs3MKJkv1MdibwKMHyCCvOC9XQVtBhnKAoSpgtExxL8C7YfOZYabW/dvUHutMCTtEAAAA=

Я также пытался gzdecode, gzinflateЧто мне делать дальше, чтобы вернуть мой JSON, чтобы я мог обработать его с помощью PHP?

ОБНОВИТЬ:
Я пытался делать то, что предлагал Саммитч, но все равно получал ошибки. Используя это (https://gist.github.com/magnetikonline/650e30e485c0f91f2f40) для выгрузки всей информации запроса предусмотрено следующее:

POST /gzip.php HTTP/1.1

HTTP headers:
Authorization: Bearer xxxx
Host: mysite.com
Expect: 100-continue

Request body:
0QAAAB+LCAAAAAAABAAdjsEKgzAQRH9lyaUXK/bqWSn0UmntqelhiYsGZJNuorUU/70htzcPZhj102rAiFrVz4StiJMrdzhSMlp1LsRLcNy7O8lKAkdoN0M+WseJe/mC0HuhEMszxRsF7zikaqFVQxHtHPLMKZs8nvODafNkIg1gJhRMJEBs3MKJkv1MdibwKMHyCCvOC9XQlNBhnOBwKGC2TFAV4F2w+UxVarW/dvUHpEHFyNEAAAA=

Я пробовал как с, так и без base64.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector