我正在我的C#客户端中使用用java编写的rest api。我正在向服务器输送大量数据,并且我正在使用RestSharp.dll以进行休息调用。我要做的是构造一个对象,并直接将其添加到 RestSharp 请求对象的主体中,并为其提及 .netserializer。因此,它将自动序列化并发布它。一切都很好。
现在我需要应用 LZO 或 GZIP 压缩。因此,该服务器的负载将减少。
我知道如何实现这两种压缩技术。但是如何使用 RestSharp 请求对象实现它呢?
我必须做什么。我正在将对象添加到请求正文中。何时执行压缩?
任何帮助...
谢谢
RestSharp 从 102.7 版本开始支持 HTTP 压缩。我不确定这是否仅适用于Windows Phone或所有平台都支持压缩。
最常见的算法是GZip和Deflate,尽管实际的压缩级别通常由服务器控制。
更新:
我刚刚使用 Fiddler 验证了 HTTP 压缩在 103.1 中默认启用。以下代码返回使用 GZip 编码的页面:
var target = "http://msdn.microsoft.com/";
var client=new RestClient(target);
var request = new RestRequest("",Method.GET);
var response = client.Execute(request);
Console.WriteLine(response.Content);
无需添加接受编码标头。
仅当服务器支持压缩时,压缩才会起作用。否则,响应将被解压缩。
这意味着Java服务也必须启用HTTP压缩。
如果响应被压缩,则内容编码标头将设置为压缩方法,例如。嘎。
要直观地检查这一点,请打开 Fiddler 并检查对 RestRequest 的响应。"响应"窗格的"转换器"选项卡显示压缩设置。