ActiveCollab / отпуск-токен возвращает HTML вместо JSON - PullRequest
0 голосов
/ 14 марта 2020

До месяца или около того go наш интерфейс к A C работал просто отлично. Но теперь всякий раз, когда наш код вызывает

https://url/public/api/v1/issue-token

, мы теперь получаем 700 плюс строки html с сообщением «Что-то пошло не так. Пожалуйста, обратитесь в службу технической поддержки. ", Вместо ответа json.

Я пока не нашел ничего, что могло бы объяснить это сообщение об ошибке. Сертификат самоподписан, но уже довольно давно, и интерфейс работал с ним ранее. Этот набор кода не менялся более шести месяцев, опять же, раньше он работал нормально.

Я вполне уверен, что сама страница возвращается из A C, поскольку возвращается содержимое раздела заголовка API и заголовок раздела со стандартной страницы входа A C одинаковы. Элемент html из ответа API приведен ниже.

<!DOCTYPE html>
<html lang="en-us"
      xml:lang="en-us"
      xmlns="http://www.w3.org/1999/xhtml"
      ng-controller="AngieApplicationController"
      class="{{ wireframe.get_theme() }}"
      ng-class="{
        unauthorized  : wireframe.initialized && wireframe.authorized === false,
        initialized   : wireframe.initialized
      }">
  <head>

Есть мысли, идеи, предложения о том, куда обратиться дальше?

            AC5TokenRequest tokenRequest = new AC5TokenRequest { username = username, password = password, client_name = clientApp, client_vendor = clientVendor };

            HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(baseUrl + "/issue-token");
            wr.Method = "POST";
            wr.ContentType = "application/json;charset=utf-8";

            UTF8Encoding encoding = new UTF8Encoding();
            string request = SerializationHelper.ToJSON(tokenRequest);
            byte[] bytes = encoding.GetBytes(request);
            wr.ContentLength = bytes.Length;

            using (Stream requestStream = wr.GetRequestStream())
            {
                requestStream.Write(bytes, 0, bytes.Length);
            }

            using (Stream response = wr.GetResponse().GetResponseStream())
            using (TextReader tr = new StreamReader(response))
            {
                string responseText = tr.ReadToEnd();

                JObject jo = JObject.Parse(responseText);
                if((bool)jo["is_ok"] == true )
                {
                    accessToken = (string)jo["token"];
                }
            }
...