При настройке интеграции с внешними API, работающими по протоколу HTTPS, разработчики часто сталкиваются с двумя проблемами: невозможностью просмотреть содержимое отправляемого пакета и ошибками сервера при валидации параметров запроса. Рассмотрим, как поэтапно решить обе задачи.
Когда 1С возвращает ошибку или API сообщает, что параметры не заполнены, крайне полезно увидеть «сырой» запрос. Для этого применяются снифферы, такие как Fiddler. Однако, использование прокси для HTTPS-трафика требует настройки доверия к сертификатам.
Ошибка установки SSL-соединения, это означает, что платформа 1С не доверяет корневому сертификату Fiddler. Вам необходимо экспортировать корневой сертификат Fiddler и импортировать его в хранилище Доверенные корневые центры сертификации в Windows.Частая ошибка при интеграции с OAuth2-сервисами (включая Сбер) заключается в неверном понимании типа контента. Если вы указываете заголовок Content-Type: application/x-www-form-urlencoded, сервер ожидает не JSON-структуру, а строку, где параметры разделены символом &, а ключи и значения соединены знаком =.
Разберем пример правильной реализации отправки данных в формате x-www-form-urlencoded:
// Пример правильной отправки данных для OAuth2
ЗапросHTTP = Новый HTTPЗапрос;
ЗапросHTTP.АдресРесурса = "/ic/sso/api/v2/oauth/token";
ЗапросHTTP.Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded");
ЗапросHTTP.Заголовки.Вставить("Accept", "application/json");
// Формируем тело запроса как строку параметров
ТелоЗапроса = СтрШаблон("code=%1&client_id=%2&client_secret=%3&redirect_uri=%4&grant_type=authorization_code",
КодАвторизации,
ИдентификаторПриложения,
СекретПриложения,
URLПеренаправления);
ЗапросHTTP.УстановитьТелоИзСтроки(ТелоЗапроса);
// Выполнение запроса
Соединение = Новый HTTPСоединение("edupirfintech.sberbank.ru", 443, , , , , Новый ЗащищенноеСоединениеOpenSSL());
Ответ = Соединение.ОтправитьДляОбработки(ЗапросHTTP);
Если вы отправляете JSON, вы должны убедиться, что сервер поддерживает такой тип контента. В случае с получением токенов (OAuth2), большинство API жестко придерживаются стандарта application/x-www-form-urlencoded. Если вы передаете JSON, но в заголовке указываете x-www-form-urlencoded, сервер не сможет прочитать параметры, что приведет к ошибке invalid_grant или 400 Bad Request.
Content-Type требует конкретный метод.СинхронизацияСКалендаремGoogle), изучите их код. Чаще всего там уже реализованы проверенные механизмы формирования запросов.Content-Type, для успешной авторизации требуется передавать дополнительные параметры в заголовке Authorization (например, Basic Auth), что также нужно учитывать при формировании объекта HTTPЗапрос.Следуя этим рекомендациям и правильно форматируя тело запроса, вы сможете успешно интегрироваться с любым современным API без возникновения ошибок SSL или неверного формата данных.