Мне нужно ПОСТАВИТЬ значение метки времени в 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;
Может кто-нибудь помочь мне понять, где я ошибаюсь, или указать, как мне это решить.Спасибо: -)