RestSharp AddHeader不起作用

问题描述:

我正在用C#和RestSharp 105.2.3构建一个简单的REST/Json Windows客户端。一切都很好,但我指定的额外的HTTP标题似乎并没有根据Wireshark追踪添加。我是否错过了某些东西,或者是否有我应该使用的基础HTTP方法?RestSharp AddHeader不起作用

var client = new RestClient("http://example.com"); 
    client.Authenticator = new HttpBasicAuthenticator("username", password"); 

    var requestParams = new RequestItem 
    { Parameter1 = "test1", Parameter2 = "test2" }; 

    var request = new RestRequest("/sample/", Method.POST); 
    request.AddHeader("RequestId", "value"); 

    request.RequestFormat = DataFormat.Json; 
    request.Parameters.Clear(); 
    var requestParamsJson = request.JsonSerializer.Serialize(requestParams); 
    request.AddParameter("application/json; charset=utf-8", requestParamsJson, ParameterType.RequestBody); 
    IRestResponse<ResponseItem> response = client.Execute<ResponseItem>(request); 
+1

我觉得它的'request.Parameters.Clear();'调用。查看源代码,'AddHeader'将一个项目添加到'Parameters'集合中,然后您将清除它。 – Amy

+0

这就是它!我以为Parameters.Clear方法只影响参数和内容。 –

+0

好热的diggity。那么我会将它添加为答案。 – Amy

您需要删除request.Parameters.Clear();电话:概述如下,我无法看到在跟踪的RequestID头

的代码非常简单。 Internally,RestSharp为您正在清除的Parameters集合添加标题。因此,删除呼叫,或将它移到添加标题的位置上方,将解决问题。