如何让RestSharp正确地压缩压缩的HTTP响应?

时间:2015-08-21 21:48:43

标签: c# http restsharp compression

我使用RestSharp来调用REST服务。我的电话看起来像这样:

var request = new RestRequest("/foo", Method.POST);
request.JsonSerializer.ContentType = "application/json; charset=utf-8";
request.AddJsonBody(new string[] { "param1", "param2" });
var response = this._client.Execute<Foo>(request);

对于大多数其他调用,这可以正常工作。我在压缩响应时遇到问题。响应中的标题(大部分)看起来像这样:

HTTP/1.1 200 OK
Uncompressed-Size: 35000
Content-Length: 3019
Content-Encoding: deflate
Content-Type: application/json

问题是当我用RestSharp调用此方法时,我不断收到错误:

  

错误:块长度与其补码不匹配。

我已尝试在请求中设置Accept-Encoding标头但仍会产生错误。我也尝试使用自定义反序列化器,但在反序列化之前发生错误。据我所知,如果Content-Encoding标题显示deflate(它确实如此),RestSharp应自动处理通缩。

如何让RestSharp正确处理通货紧缩?

更新

最后,我可以更改服务,在请求中查找Accept-Encoding标头,其值为identity。如果找到,则更改服务以返回未压缩的数据。

遗憾的是,这不是原始问题的真正解决方案,但它确实解决了我的问题。如果发布了更好的解决方案,我会尝试。

1 个答案:

答案 0 :(得分:0)

根据这篇文章,如果您未能在内容类型中传递charset = utf-8,您应该能够处理它。

请参考: RestSharp compress request while making rest call to server