2015-04-01 26 views
1

我想从使用RestSharp的C#ASP.NET 4.0应用程序中调用REST服务。告诉RestSharp *不*要添加特定的HTTP标头

这是一个非常简单的POST调用https://地址;我的代码是这样的(CheckStatusRequest是一个普通的简单的DTO有四五stringint性能 - 没有任何幻想):

public CheckStatusResponse CheckStatus(CheckStatusRequest request) { 
    // set up RestClient 
    RestClient client = new RestClient(); 
    string uri = "https://......."; 

    // create the request (see below) 
    IRestRequest restRequest = CreateRequestWithHeaders(url, Method.POST); 

    // add the body to the request 
    restRequest.AddBody(request); 

    // execute call 
    var restResponse = _restClient.Execute<CheckStatusResponse>(restRequest); 
} 

// set up request 
private IRestRequest CreateRequestWithHeaders(string uri, Method method) { 
    // define request 
    RestRequest request = new RestRequest(uri, method); 

    // add two required HTTP headers 
    request.AddHeader("Accept", "application/json"); 
    request.AddHeader("Content-Type", "application/json"); 

    // define JSON as my format 
    request.RequestFormat = DataFormat.Json; 

    // attach the JSON.NET serializer for RestSharp 
    request.JsonSerializer = new RestSharpJsonNetSerializer(); 

    return request; 
} 

,当我通过提琴手发送这些请求,看看有什么我有问题事情是,我的要求突然得到一个第三和不必要的HTTP标头:

POST https://-some-url- HTTP/1.1 
Accept: application/json 
User-Agent: RestSharp/104.4.0.0 
Content-Type: application/json 
Host: **********.com 
Content-Length: 226 
Accept-Encoding: gzip, deflate <<<=== This one here is UNWANTED! 
Connection: Keep-Alive 

我突然有Accept-Encoding HTTP标头,这是我从来没有指定(和我不希望在那里)。而现在我的回应不再是正确的JSON(我可以解析),但突然间我得到了gzip压缩的二进制数据(当尝试进行JSON反序列化时,这并不是很好)...

如何摆脱第三个不需要的HTTP头?

  • 我试着将它设置为别的东西 - 无论我输入刚刚被追加到这些设置
  • 我试图以某种方式“清”即HTTP头 - 没有任何成功
  • 我试图找到一个属性该RESTClient实现或RestRequest类指定“不使用压缩程序”

回答

2

望着RestSharp的来源(Http.Sync.csHttp.Async.cs),你可以看到,这些值是硬编码:

webRequest.AutomaticDecompression = 
    DecompressionMethods.Deflate | DecompressionMethods.GZip | DecompressionMethods.None; 

还有一个描述此问题的开放issue。它于2014年8月开放,但仍未解决。我想你可以在那里发表评论,也许他们会注意。

+0

谢谢 - 我很期待RestSharp团队能够在即将发布的官方版本中添加此功能,并创建自己的定制版本的RestSharp .... – 2015-04-22 08:18:43