публикация исходной ИБ (crm) с повторным использованием сеансов отвечает HTTP 400 без заголовка сеанса

This commit is contained in:
mihailkudravcev
2026-08-11 15:42:46 +03:00
parent f306257050
commit 17e5a81a1d
3 changed files with 36 additions and 1 deletions
@@ -158,6 +158,8 @@
?(Разбор.HTTPS, Новый ЗащищенноеСоединениеOpenSSL(), Неопределено));
ЗапросHTTP = Новый HTTPЗапрос(ПутьЗапроса);
// Повторное использование сеансов HTTP на публикации 1С (иначе HTTP 400 без IBSession).
ЗапросHTTP.Заголовки.Вставить("IBSession", "start");
// X-Transfer-Token не конфликтует с Basic Auth пользователя публикации (см. README ws-rhana).
Если Не ПустаяСтрока(Ключ) Тогда
ЗапросHTTP.Заголовки.Вставить("X-Transfer-Token", Ключ);
@@ -187,7 +189,7 @@
Если ОтветHTTP.КодСостояния < 200 Или ОтветHTTP.КодСостояния >= 300 Тогда
ЗаписьЖурналаРегистрации("РК_ОбменСВнешнейБазой", УровеньЖурналаРегистрации.Ошибка, , ,
"HTTP " + ОтветHTTP.КодСостояния + " " + Относительный + ": " + ТекстОтвета);
ВызватьИсключение "Ошибка HTTP " + ОтветHTTP.КодСостояния + ": " + ТекстОтвета;
ВызватьИсключение КраткийТекстОшибкиHTTP(ОтветHTTP.КодСостояния, ТекстОтвета);
КонецЕсли;
Чтение = Новый ЧтениеJSON;
@@ -228,4 +230,24 @@
КонецФункции
Функция КраткийТекстОшибкиHTTP(КодСостояния, ТекстОтвета)
Описание = СокрЛП(Строка(ТекстОтвета));
ПозицияDescr = СтрНайти(Описание, "<descr>");
Если ПозицияDescr > 0 Тогда
Хвост = Сред(Описание, ПозицияDescr + 7);
ПозицияКонец = СтрНайти(Хвост, "</descr>");
Если ПозицияКонец > 0 Тогда
Описание = СокрЛП(Лев(Хвост, ПозицияКонец - 1));
КонецЕсли;
КонецЕсли;
Если СтрДлина(Описание) > 500 Тогда
Описание = Лев(Описание, 500) + "…";
КонецЕсли;
Возврат "Ошибка HTTP " + КодСостояния + ": " + Описание;
КонецФункции
#КонецОбласти