我在我的 C# 客户端中使用了一个用 java 编写的 rest api。我正在向服务器输送大量数据,并且我正在使用 RestSharp.dll 进行休息调用。我要做的是构造一个对象并将其直接添加到 RestSharp 请求对象的主体中,并为其提及 .netserializer。所以它会自动序列化并发布它。一切都很好。
现在我需要应用 LZO 或 GZIP 压缩。这样服务器的负载就会减少。
我知道如何实现这两种压缩技术。但是如何用 RestSharp 请求对象来实现呢?
我必须做的。我正在向请求正文添加对象。什么时候执行压缩?
任何帮助...
谢谢
最佳答案
RestSharp supports HTTP compression从 102.7 版开始。我不确定这是否仅适用于 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);
无需添加 Accept-Encoding header 。
压缩只有在服务器支持时才有效。否则响应将被解压缩。
这意味着 Java 服务也必须启用 HTTP 压缩。
如果响应被压缩,则 Content-Encoding header 将设置为压缩方法,例如。压缩包。
要直观地检查这一点,请打开 Fiddler 并检查对 RestRequest 的响应。响应 Pane 的转换器选项卡显示压缩设置。
关于.net - RestSharp 压缩请求,同时对服务器进行休息调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10914672/