Отметка времени прохождения в формате JSON в стиле Ajax - PullRequest
0 голосов
/ 06 марта 2019

Мне нужно ПОСТАВИТЬ значение метки времени в API ", поскольку даты JSON представлены в следующем формате:" / Date (1333057093445) / "."Дата считается отсчетом в миллисекундах эпохи UNIX.Когда я создаю запрос JSON для почтальона, например: {"Timestamp": "\/Date(1551838072000)\/"} сообщение успешно (200 ответов).До сих пор я не смог сериализовать свой объект C # и выполнить публикацию в API для получения того же результата (вместо этого я получаю внутреннюю ошибку сервера 500).Мой код C # (для этого свойства):

public string Timestamp { get { return $@"\/Date({MessageTimestamp})\/"; } }

Свойство MessageTimestamp содержит значение счетчика длинных миллисекунд (например, 1551838072000).После сериализации публикуемый результат: {"Timestamp":"\\/Date(1551838072000)\\/"} и POST не выполняется.Мой код сериализации:

                string bodyText = JsonConvert.SerializeObject(message,
                    new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });

Объект сообщения содержит свойство «Timestamp», как указано выше.Когда я смотрю на переменную bodyText с помощью визуализатора JSON, она показывает свойство, как я и ожидал.Я попытался отправить только значение в миллисекундах и полную дату в формате UTC (в формате, приемлемом для JSON), и, как и ожидалось, они оба потерпели неудачу.Я использую библиотеку RestSharp, чтобы отправить запрос, и я добавляю «bodyText» в тело запроса.Полный код запроса:

                // Build the request
            RestRequest request = new RestRequest(item.UrlPath, action);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Accept", "application/json");
            request.AddHeader("charset", "utf-8");
            request.RequestFormat = DataFormat.Json;

            string bodyText = JsonConvert.SerializeObject(message,
                    new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });

            request.AddBody(bodyText);

            if (detail.baseUrl.StartsWith(@"https://"))
            {
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
            }
            var tcs = new TaskCompletionSource<IRestResponse>();
            restClient.ExecuteAsync(request, response =>
            {
                tcs.SetResult(response);
            });
            dynamic garminResponse = await tcs.Task;

Может кто-нибудь помочь мне понять, где я ошибаюсь, или указать, как мне это решить.Спасибо: -)

...