[Шпаргалка] Вычисление Content-Length в POST запросе на примере Битрикс 24

20.11.23

Интеграция - WEB-интеграция

Вычисление Content-Length в POST запросе на примере Битрикс 24. Информации про это в интернете мало, может, кому-то сэкономит время.

Добрый день.

Встала простая задача по restapi обратиться в битрикс и забрать оттуда данные по массиву id.

Дергаем ручку в Postmane - все ок.

 

 

Делаем Http post запрос из 1с - ответ 200, но пустой результат. Все дело в том что Postman умеет высчитывать Content-Length. В 1С его нужно высчитывать вручную, и передавать не серилизованный JSON в теле а файл. 

Ниже работающий пример:

       HTTPСоединение  = ПолучитьHTTPСоединение();
	   перЗапрос = "local/rest/1C/deal.php";
	   
		
		Структура = Новый Структура;
		Структура.Вставить("id", ИдСтрока);
	
		ЗаписьJSON = новый ЗаписьJSON();
		ЗаписьJSON.УстановитьСтроку();
		ЗаписатьJSON(ЗаписьJSON, Структура);
		
		ДанныеДляОтправкиJSON = ЗаписьJSON.Закрыть();  
		
		ФайлЗапроса = ПолучитьИмяВременногоФайла();
		ТекстовыйФайл = Новый ТекстовыйДокумент;
   		ТекстовыйФайл.УстановитьТекст(ДанныеДляОтправкиJSON);          
   		ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.ANSI); 
		
		ФайлОтправки = Новый Файл(ФайлЗапроса);
   		РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());

       	Заголовки = Новый Соответствие;
		Заголовки.Вставить("Content-Type", "text/plain;charset=UTF-8");  
		Заголовки.Вставить("Content-Length", РазмерФайлаОтправки); 

		HTTPЗапрос = Новый HTTPЗапрос(перЗапрос, Заголовки);

		
		HTTPЗапрос.УстановитьИмяФайлаТела(ФайлЗапроса);
		
		HTTPОтвет = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
		
		СтрокаJSON = HTTPОтвет.ПолучитьТелоКакСтроку(); 
	
		ЧтениеJSON = Новый ЧтениеJSON();
		ЧтениеJSON.УстановитьСтроку(СтрокаJSON);
		 
		перМассив = ПрочитатьJSON(ЧтениеJSON);

 

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь 1С:Предприятие 8 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM / LOGICSTARS. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM / LOGICSTAR разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    22203    32    24    

26

SALE! 15%

WEB-интеграция Программист Бизнес-аналитик 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Оптовая торговля, дистрибуция, логистика ИТ-компания Платные (руб)

Модуль "Экспортер" — это расширение для 1С, предназначенное для автоматизации процессов выгрузки данных. Оно позволяет эффективно извлекать, преобразовывать и передавать данные из систем 1С в интеграционную платформу Spot2D. Подсистема упрощает настройку, снижает количество ручных операций и обеспечивает удобный контроль данных.

17280 14688 руб.

20.12.2024    4382    22    4    

23

WEB-интеграция Программист Руководитель проекта 1С:Предприятие 8 1C:Бухгалтерия 1С:Франчайзи, автоматизация бизнеса Платные (руб)

Расширение значительно упрощает написание API на 1С. Веб программисты получают простой и понятный доступ к 1С. Описание API создаётся автоматически и представляется в виде удобном как для человека, так и для программной обработки. Основные преимущества: 1. Документация API создаётся автоматически. Удобна для программной обработки. 2. Изменить API столь же просто как настроить отчёт. Можно опубликовать существующий вариант отчёта. 3. Отчёты в API поддерживают параметры (Период, ДатаНачала и др.) 4. При создании простых методов не требуется изменять конфигурацию. 5. Поддерживается работа с планами обмена.<br/> 6. Возможно настроить отправку из 1С данных корреспондирующей системе, для случаев когда 1С сама "знает" какие данные нужно отправить. 7. После записи в 1С Ле Мурр может возвращать соответствие полученных идентификаторов созданным в 1С объектам данных.

36000 руб.

27.09.2024    10150    7    5    

11

WEB-интеграция Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разработана для автоматизации передачи данных между сервисом Vetmanager с 1С: Бухгалтерия 3.0. Решение позволяет загружать документы и справочники из Ветменеджер в 1С:Бухгалтерию, сокращая время на ручной ввод данных и минимизируя ошибки.

12000 руб.

02.02.2021    20958    60    52    

38
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. efin 20.11.23 15:10 Сейчас в теме
Отлично все 1С умеет высчитывать сам и указывать в заголовке.
А вот если применять таблетки, особенно подмену inet.dll - то перестает высчитывать, как пишут на форумах.
user621724_Dimav1979; +1 Ответить
2. user621724_Dimav1979 416 20.11.23 15:55 Сейчас в теме
(1) подменами inet.dll не занимаемся )))
3. Serg O. 314 17.10.25 20:01 Сейчас в теме
Небольшие замечания, (никто не заметил или не написал просто?)

1) почему кодировка ANSI (Windows) ?
ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.ANSI);

если далее передаётся параметр
Заголовки.Вставить("Content-Type", "text/plain;charset=UTF-8");
------------------------------------------------------------------------------------------
наверное сразу надо файл в UTF-8 кодировке писать
ТекстовыйФайл.Записать(ФайлЗапроса, КодировкаТекста.UTF8);

2) зачем РазмерФайлаОтправки = XMLСтрока(ФайлОтправки.Размер());
достаточно РазмерФайлаОтправки = Формат(ФайлОтправки.Размер(), "ЧГ=0"); // без разделителей групп
Для отправки сообщения требуется регистрация/авторизация