【发布时间】:2018-12-17 14:32:08
【问题描述】:
如何使用 RestSharp 发布 GZip 数据。我有以下代码,但它没有像我预期的那样工作:
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);
当我运行它并检查 wireshark 跟踪时,compressedBytes 变量发布为 'System.Byte[]' - 好像 ToString() 已被调用,尽管参数是 system.object。
如果我使用 Convert.ToBase64String() 和 Encoding.Utf8.GetString() 将压缩字节数组作为字符串传递,则无法在服务器上解压缩 GZip。我只是得到'System.IO.InvalidDataException:GZip 标头中的幻数不正确。确保您传递的是 GZip'。
有没有办法使用 RestSharp 发布 Gzipped 数据?
【问题讨论】:
标签: gzip asp.net-web-api restsharp