Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
31 янв 2026, 07:36

Postman возращает 200, а 1с 301.

Автор Сметанин, 13 янв 2026, 07:47

0 Пользователей и 1 гость просматривают эту тему.

Сметанин

Добрый день!
post запрос отправляю через postman код ответа 200, а через 1с код 301.
Код в 1с:Заголовки = Новый Соответствие;
Заголовки.Вставить("Token", "..."); 
Заголовки.Вставить("Content-Type", "application/json");

Сервер = "api.botto.ai";
SSL_Соединение =
Новый ЗащищенноеСоединениеOpenSSL(
Новый СертификатКлиентаWindows(),
Новый СертификатыУдостоверяющихЦентровWindows()); 
Соединение = Новый HTTPСоединение(Сервер,,,,,,SSL_Соединение);
Ресурс = "";

ИдПроверенного = ...;

//4. Получение результатов
Структура = Новый Структура;
Структура.Вставить("method", "communications.bases.contacts.export");
Парам = Новый Структура;
Парам.Вставить("id", ИдПроверенного);
Парам.Вставить("project_id", ...);
Структура.Вставить("params", Парам);

ТекстJSON = iq_ИнтеграцияСервер_Оптимизация.ПолучитьТекстJSON(Структура, Новый ПараметрыЗаписиJSON()); 

HTTPЗапрос = Новый HTTPЗапрос(Ресурс, Заголовки);
HTTPЗапрос.УстановитьТелоИзСтроки(ТекстJSON);   

HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
Если HTTPОтвет.КодСостояния = 200 Тогда   
Сообщить("Успешно");
Иначе
Сообщить(СтрШаблон("Ошибка %1", HTTPОтвет.КодСостояния));
КонецЕсли; 



Сметанин

Другие запросы на этот же ресурс из 1с отрабатывают успешно

i_smith42

301 - это код переадресации по адресу, указанному в заголовке. Адрес нужно взять из заголовков и постучаться туда. POSTMAN автоматически следует переадресациям, оттуда и ответ 200 от конечного узла. Лучше почитать что-нибудь про HTTP протокол и взять КоннекторHTTP для интеграций. Там многое уже учтено.

Сметанин

i_smith42, Да я уже пробую получить адрес из заголовка ответа Location. Этот запрос должен возращать файл.
ИначеЕсли HTTPОтвет.КодСостояния = 301 Тогда
АдресФайла = HTTPОтвет.Заголовки.Получить("Location");
Сообщить(АдресФайла);
HTTPЗапрос1 = Новый HTTPЗапрос(АдресФайла, Заголовки);
        HTTPОтвет = Соединение.Получить(HTTPЗапрос1);
ДД = HTTPОтвет.ПолучитьТелоКакДвоичныеДанные();
ДД.Записать("c:\1\botto.csv"); 
Файл сохраняет, но содержимое совсем другое, не то что в Postman, пробовал и post-запросом файл получать, результат другой, но тоже некорректный.

Сметанин

Файл должен быть xlsx, если пробую сохранить с этим расширением, при открытии пишет "формат или расширение являются недопустимыми". Пробовал уже "Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, не помогает

i_smith42

Сметанин, Файл передается в Base64 сорее всего, нужно обратное преобразоваие в двоичные данные.

Теги:
Рейтинг@Mail.ru

Поиск