Невозможно добавить параметр даты в запрос на отдых (Rest Sharp)

Я пытаюсь отправить некоторую информацию JSON на сервер. Я добавляю предварительно сериализованную строку в тело и помещаю некоторые атрибуты в заголовок.

            RestClient client = new RestClient(requURI);
            RestRequest request = new RestRequest(reqPath, method);
            request.RequestFormat = DataFormat.Json;
            request.JsonSerializer.ContentType = "application/json; charset=utf-8";

            request.AddHeader("Date", getIsoStringFromDate(DateTime.Now));
            request.AddParameter("application/json; charset=utf-8", JSonString, ParameterType.RequestBody);

Все работает отлично, кроме заголовка даты, который не отображается. Когда я меняю строку на

           request.AddHeader("Datexxx", getIsoStringFromDate(DateTime.Now));

Он будет отображаться в шапке (см. трассировку сети)

          System.Net Information: 0 : [5620] ConnectStream#61150033 -   Header 
          {
           Datexxx: 2015-03-16 16:19:39
           Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
           User-Agent: RestSharp 104.1.0.0
           Content-Type: application/json; charset=utf-8
           Host: localhost:8080
           Content-Length: 620
           Accept-Encoding: gzip, deflate
           Connection: Keep-Alive
          }

Я предполагаю, что «дата» является предопределенным или предварительно заполненным значением Rest Sharp.

Я добавил определение dateFormat с помощью

          request.DateFormat = "MMMM dd, yyyy";

Но атрибут заголовка даты по-прежнему не отображается. Также пробовал очищать все параметры перед добавлением, но тоже не помогает.

В отношении этого была ошибка github, но ей больше 2 лет ... может быть, я просто пропустил что-то вроде переключателя «includeDateInHeader».

Я использую .Net 3.5 и Rest Sharp 104.1.0.0. или 105.1.0.0. Спасибо заранее!


person Marc Wittmann    schedule 16.03.2015    source источник


Ответы (1)


кажется, что некоторые атрибуты, такие как content-type или date, не могут быть добавлены в качестве параметра, но добавляются внутри. Чтобы изменить значение «content-type», мне пришлось изменить настройку сериализатора (хотя я не использовал ее, потому что добавил json в тело, которое было сериализовано ранее!)

RestClient client = new RestClient(requURI);
RestRequest request = new RestRequest(reqPath, method);
request.RequestFormat = DataFormat.Json;
request.Parameters.Clear();             
request.AddHeader("Date", getIsoStringFromDate(DateTime.Now));
            request.JsonSerializer.ContentType = "application/json; charset=utf-8";

как только я это сделал, заголовок появился, как и предполагалось:

System.Net Information: 0 : [5620] ConnectStream#61150033 -   Header 
{
 Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
 User-Agent: RestSharp 104.1.0.0
 Content-Type: application/json; charset=utf-8
 ...
}
person Marc Wittmann    schedule 19.04.2017
comment
он по-прежнему не добавляет параметр Date, вы узнали причину или решение? - person Davit Mikuchadze; 20.02.2020