Всем привет в документации есть пример с добавление нового контакта по средствам веб запроса. Сделал все работает. Щас пытаюсь записать лид, но получаю:"Удаленный сервер возвратил ошибку: (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 комментария
16 апреля 2018 15:52
Добрый день.
В таких случаях проще всего сравнить запросы через Fiffler(тогда станет ясно что забыли). Пример работы можно посмотреть - https://academy.terrasoft.ua/documents/technic-sdk/7-12/vypolnenie-zapr…
16 апреля 2018 16:10
Короче, проблема было в том что в карточке лида были обязательные поля. Но конечно забавно возвращать 500ю ошибку
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать