Как опубликовать данные GZip с помощью RestSharp. У меня есть следующий код, но он работает не так, как я ожидал:
var restRequest = new RestRequest(url, Method.POST)
{
Timeout = Constants.DefaultTimeoutMilliseconds
};
var dataStream = new MemoryStream();
using (var zipStream = new GZipStream(dataStream, CompressionMode.Compress))
{
using (var writer = new StreamWriter(zipStream))
{
writer.Write(new DotNetXmlSerializer().Serialize(content));
}
}
var compressedBytes = dataStream.ToArray();
restRequest.AddParameter("application/x-gzip", compressedBytes, ParameterType.RequestBody);
return _restClient.Execute<TResponseData>(restRequest);
Когда я запускаю это и проверяю трассировку wirehark, переменная compressedBytes отправляется как 'System.Byte []' - как будто для нее был вызван ToString (), несмотря на то, что параметр является system.object.
Если я передаю сжатый массив байтов в виде строки, используя как Convert.ToBase64String (), так и Encoding.Utf8.GetString (), я не смогу распаковать GZip на сервере. Я просто получаю System.IO.InvalidDataException: магическое число в заголовке GZip неверно. Убедитесь, что вы передаете GZip '.
Есть ли способ опубликовать сжатые данные с помощью RestSharp?