Вопрос

С#, проблемы с программным созданием Лида(((

Всем привет в документации есть пример с добавление нового контакта по средствам веб запроса. Сделал все работает. Щас пытаюсь записать лид, но получаю:"Удаленный сервер возвратил ошибку: (500) Внутренняя ошибка сервера.". Подскажите что я делаю не так?

В тесте пытаюсь записать лид с одним заполненным полем(Название контрагента

Мой код:

public static void insertData()
        {
            Console.WriteLine("Попытка создать лид");
 
            // Экземпляр класса запроса.
            var insertQuery = new InsertQuery()
            {
                // Название корневой схемы.
                RootSchemaName = "Lead",
                // Коллекция добавляемых значений колонок.
                ColumnValues = new ColumnValues()
            };
 
            var columnExpressionName = new ColumnExpression
            {
                // Тип выражения запроса к схеме объекта — параметр.
                ExpressionType = EntitySchemaQueryExpressionType.Parameter,
                // Параметр выражения запроса.
                Parameter = new Parameter
                {
                    // Значение параметра.
                    Value = "ЛИД C САЙТА",
                    // Тип данных параметра — строка.
                    DataValueType = DataValueType.Text
                }
            };
 
 
          
 
            // Инициализация коллекции колонок запроса.
            insertQuery.ColumnValues.Items = new Dictionary<string, ColumnExpression>();
            // Добавление выражений запроса в коллекцию добавляемых колонок.
            // Колонка [Название контрагента].
            insertQuery.ColumnValues.Items.Add("Account", columnExpressionName);
           
 
 
            // Сериализация экземпляра класса запроса на добавление в JSON-строку.
            var json = new JavaScriptSerializer().Serialize(insertQuery);
 
            // Преобразование строки JSON-объекта в массив байтов.
            byte[] jsonArray = Encoding.UTF8.GetBytes(json);
            // Создание экземпляра HTTP-запроса.
            var insertRequest = HttpWebRequest.Create(insertQueryUri) as HttpWebRequest;
            // Определение метода запроса.
            insertRequest.Method = "POST";
            // Определение типа содержимого запроса.
            insertRequest.ContentType = "application/json";
            // Добавление полученных ранее аутентификационных cookie в запрос на получение данных.
            insertRequest.CookieContainer = AuthCookie;
            // Установить длину содержимого запроса.
            insertRequest.ContentLength = jsonArray.Length;
 
            // Добавление CSRF-токена в заголовок запроса.
            CookieCollection cookieCollection = AuthCookie.GetCookies(new Uri(authServiceUri));
            string csrfToken = cookieCollection["BPMCSRF"].Value;
            insertRequest.Headers.Add("BPMCSRF", csrfToken);
 
            // Помещение в содержимое запроса JSON-объекта.
            using (var requestStream = insertRequest.GetRequestStream())
            {
                requestStream.Write(jsonArray, 0, jsonArray.Length);
            }
 
          
          
          // Выполнение HTTP-запроса и получение ответа от сервера.
          using (var response = (HttpWebResponse)insertRequest.GetResponse())
          {
              // Вывод ответа в консоль.
              using (StreamReader reader = new StreamReader(response.GetResponseStream()))
              {
                  Console.WriteLine("JSON ответ от сервера");
                  Console.WriteLine(reader.ReadToEnd());
              }
          }
 
 
        }

 

У меня такой же вопрос

3 комментария

Добрый день.

В таких случаях проще всего сравнить запросы через Fiffler(тогда станет ясно что забыли). Пример работы можно посмотреть - https://academy.terrasoft.ua/documents/technic-sdk/7-12/vypolnenie-zapr…

Короче, проблема было в том что в карточке лида были обязательные поля. Но конечно забавно возвращать 500ю ошибку 

VladKapitanchyk,

Спасибо

Войдите или зарегистрируйтесь, чтобы комментировать