2016-10-04 5 views
1

Я создаю простой клиент Windows REST/Json с помощью C# и RestSharp 105.2.3. Все работает прекрасно, но дополнительный HTTP-заголовок, который я указываю, кажется, не добавляется в соответствии с трассировкой Wireshark. Я что-то упустил или есть базовый метод HTTP, который я должен использовать?RestSharp AddHeader не работает

код прост, как описано ниже, и я не могу видеть заголовок RequestID в след:

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();' call. Рассматривая исходный код, 'AddHeader' добавляет элемент в коллекцию' Parameters', которую вы очищаете. – Amy

+0

Thats it !!! Я думал, что Parameters.Clear метод влияет только на параметры и контент. –

+0

Хорошо горячий diggity. Тогда я добавлю это в качестве ответа. – Amy

ответ

0

Вы должны удалить request.Parameters.Clear(); вызов. Internally, RestSharp добавляет заголовки к коллекции Parameters, которую вы очищаете. Поэтому удаление вызова или перемещение его выше, где вы добавляете заголовок, устранит проблему.

Смежные вопросы