4

我在我的 C# 客户端中使用了一个用 java 编写的 rest api。我正在向服务器发送大量数据,并且我正在使用 RestSharp.dll 进行休息调用。我要做的是构造一个对象并将其直接添加到 RestSharp 请求对象的主体中,并为其提及 .netserializer。所以它会自动序列化并发布。一切都很好。

现在我需要应用 LZO 或 GZIP 压缩。这样服务器的负载就会减少。

我知道如何实现这两种压缩技术。但是如何用 RestSharp 请求对象来实现呢?

我该做什么。我正在向请求正文添加对象。何时执行压缩?

任何帮助...

谢谢

4

1 回答 1

4

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);

无需添加 Accept-Encoding 标头。

压缩仅在服务器支持时才有效。否则响应将被解压缩。

这意味着 Java 服务也必须启用 HTTP 压缩。

如果响应被压缩,则 Content-Encoding 标头将设置为压缩方法,例如。压缩

要直观地检查这一点,请打开 Fiddler 并检查对 RestRequest 的响应。Response 窗格的 Transformer 选项卡显示压缩设置。

于 2012-06-06T13:16:49.507 回答