RestSharp AddHeader не работает

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

Код прост, как показано ниже, и я не вижу заголовок 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);

person Ralph Flotner    schedule 04.10.2016    source источник
comment
Я думаю, это вызов request.Parameters.Clear();. Глядя на исходный код, AddHeader добавляет элемент в коллекцию Parameters, которую вы затем очищаете.   -  person    schedule 04.10.2016
comment
Вот и все!!! Я думал, что метод Parameters.Clear влияет только на параметры и содержимое.   -  person Ralph Flotner    schedule 05.10.2016
comment
Ну горячая копать. Я добавлю это как ответ тогда.   -  person    schedule 05.10.2016


Ответы (1)


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

person Community    schedule 05.10.2016