Отслеживание событий Revulytics возвращает неверный запрос

Я тестирую API отчетов Revulytics и пытаюсь сгенерировать расширенный отчет по отслеживанию событий в соответствии с http://devzone.revulytics.com/docs/API/event-tracking-advanced-reports.html. Я использую C# и класс WebClient для отправки HTTP-запроса (и Newtonsoft для анализа и форматирования JSON). Однако, хотя мой JSON отформатирован правильно, а клиент правильно настроен, я получаю необработанное исключение. Пример кода ниже:

    RuiAdvancedRequest advancedRequest = new RuiAdvancedRequest();
    DateTime startDate = DateTime.Now.AddDays(-180);
    advancedRequest.user = textUser.Text;
    advancedRequest.sessionId = authResponseObj.sessionId;
    advancedRequest.productId = Convert.ToInt64(textProductId.Text);
    advancedRequest.startDate = startDate.ToString("yyyy-MM-dd");
    advancedRequest.stopDate = DateTime.Now.Date.ToString("yyyy-MM-dd");
    advancedRequest.events = list;
    string serializedRequest = JsonConvert.SerializeObject(advancedRequest);
    string reportResult = client.UploadString(featureuUsageURL, "POST", serializedRequest);

Последняя строка завершается с ошибкой: необработанное исключение типа "System.Net.WebException" произошло в System.dll Дополнительная информация: удаленный сервер возвратил ошибку: (400) неверный запрос. Есть ли способ получить больше информации об ошибках с сервера Revulytics?

1 ответ

Попробуйте обработать исключение и посмотрите поток ответов об ошибках. Я получил похожую ошибку: хотя JSON был правильно отформатирован, если значения параметров не в порядке с точки зрения сервера, он по-прежнему возвращает эту ошибку - то же самое, как если бы JSON не был должным образом отформатирован.

try
{
  reportResult = client.UploadString(featureuUsageURL, "POST",    serializedRequest);
}
catch (WebException error)
{
  string responseText;
  var responseStream = error.Response?.GetResponseStream();
  if (responseStream != null)
  {
    using (var reader = new StreamReader(responseStream))
  {
responseText = reader.ReadToEnd();
MessageBox.Show(responseText);
}    

Надеюсь это поможет

Другие вопросы по тегам