Модуль в этой статье: Инструменты
Тестирование HTTPS iFlow в SAP CPI с сервисным ключом и трассировка вызова
Вызовите HTTPS-эндпоинт SAP CPI с OAuth client credentials из сервисного ключа Process Integration Runtime, найдите сообщение, созданное вызовом, и трассируйте его шаг за шагом.

iFlow с отправителем HTTPS легко развернуть и на удивление неудобно вызвать: нужен правильный эндпоинт, токен от правильного сервисного ключа, иногда CSRF-токен, а потом ещё надо найти в мониторе сообщение, которое создал ваш вызов.
В этой статье весь цикл для SAP Cloud Integration (SAP CPI) пройден целиком: что нужно, как получить токен и вызвать эндпоинт, как найти получившееся сообщение и как его трассировать.
Что понадобится
- Развёрнутый iFlow с каналом отправителя HTTPS. Его Address, например
/orders/create, становится частью эндпоинта. - URL эндпоинта: хост среды выполнения, затем
/httpи адрес. Для развёрнутого iFlow его показывает Manage Integration Content в мониторе. - Экземпляр сервиса Process Integration Runtime с сервисным планом
integration-flowи ролью, которой разрешено отправлять сообщения, а также сервисный ключ этого экземпляра с client ID и secret. - Тестовый payload, который принимает iFlow.
Получите токен и вызовите эндпоинт
В сервисном ключе есть всё, что нужно для вызова: client ID и secret, URL сервиса токенов и хост среды выполнения:
{
"oauth": {
"clientid": "<client id>",
"clientsecret": "<secret>",
"url": "https://<subaccount>.it-cpi<nn>-rt.cfapps.<region>.hana.ondemand.com",
"tokenurl": "https://<subaccount>.authentication.<region>.hana.ondemand.com/oauth/token"
}
}Обращайтесь с client secret как с паролем: не держите ключ в общих файлах, тикетах и чатах.
Вызовите эндпоинт и прочитайте ответ
Вызов состоит из двух запросов: сначала токен по grant client credentials, затем сам вызов с этим токеном:
# 1. Get an access token with the client credentials of the service key
curl -X POST "<tokenurl>" \
-u "<clientid>:<clientsecret>" \
-d "grant_type=client_credentials"
# 2. Call the iFlow's HTTPS endpoint with the token
curl -i -X POST "<url>/http/orders/create" \
-H "Authorization: Bearer <access_token>" \
-H "Content-Type: application/json" \
-d @order.json
# The response headers include SAP_MessageProcessingLogID: the Message ID of this call.- 401: токена нет, он истёк или выдан для другого субаккаунта.
- 403: роли сервисного ключа не разрешено отправлять сообщения, или отправитель HTTPS требует CSRF-токен. Для тестового эндпоинта можно отключить защиту CSRF в канале или сначала получить токен.
- 404: неверный адрес, или iFlow не развёрнут.
- 500: iFlow дал сбой; где именно, скажет журнал обработки сообщения.
При любом статусе заголовок ответа SAP_MessageProcessingLogID даёт Message ID вызова, и с ним можно открыть сообщение: см. статью о поиске сообщения по Message ID.
То же самое в браузере с HTTP Runner
В Toolbox Kitegra есть HTTP Runner для эндпоинтов ваших iFlow. Откройте его из вида «Инструменты» во всплывающем окне расширения.
- «Новая коллекция» и «Новый запрос» создают коллекцию запросов GET, POST, PUT, PATCH, DELETE или HEAD с параметрами запроса, заголовками и телом JSON, XML, текстом или файлом.
{{variables}}и среды (dev, test, prod): добавьте среду кнопкой «Новая среда» или отправляйте с «Без среды». Значение переменной, отмеченной как «Секретная», остаётся в этом браузере.- Auth: «Из коллекции», «Нет», «Basic», «Токен Bearer» или «OAuth2 client credentials (service key)», куда вы вставляете JSON «Service key (Process Integration Runtime)»; токен получается за вас. Нужен ключ с client secret; ключ на основе сертификата не поддерживается.
- «Тесты» проверяют ответ («Статус равен», «Тело содержит», «JSONPath равен», «XPath равен»), «Извлечение» сохраняет значения из него в переменные, а «Запустить коллекцию» отправляет всю коллекцию по порядку.
- «Импорт» → «Коллекция Postman» загружает коллекцию Postman, как в статье о переходе от Postman или OpenAPI к получателю HTTP, а на вкладке «Набор данных» кнопка «Отправить каждое сообщение» отправляет все сообщения набора данных из генератора тестовых payload.
Ничего не отправляется, пока вы не нажмёте «Отправить», а ваши cookies SAP не отправляются никогда. Runner вызывает только хосты под *.hana.ondemand.com. После вызова кнопка «Открыть в мониторе» открывает сообщение по его SAP_MessageProcessingLogID в просмотрщике журналов; если хост дизайнера нельзя определить по endpoint, укажите в среде тенант (хост дизайнера) для «Открыть в мониторе».
Трассируйте вызов
- Откройте iFlow в дизайнере, откройте «Сообщения» через кнопку «Инструменты Kitegra» и переключите «Trace: выкл.» во включённое положение.
- Нажмите «Отправить» в Runner или вызовите endpoint через curl.
- Сообщение появится на панели «Сообщения» с отметкой TRACE. Выберите «На схеме».
- Щёлкните окрашенный шаг, чтобы увидеть тело, headers и exchange properties перед ним.
Панель трассировки подробно описана в статье о пошаговой трассировке сообщения.
Чем помогает Kitegra
В Kitegra сервисный ключ, значения авторизации и секретные переменные остаются в вашем браузере. После входа коллекции и среды Runner синхронизируются с аккаунтом Kitegra, причём из них удаляются все значения авторизации и секретные переменные. Runner — часть Toolbox, которая бесплатна; трассировка и просмотр журналов относятся к Message Monitor.
Helper, Message Monitor, iFlow Inspector и iFlow Docs по отдельности считают iFlow, на которых вы их используете: 5 на модуль без аккаунта Kitegra, 50 на тарифе Free, 100 на Starter и 300 на Pro; в Business ограничений нет. Toolbox и дополнения для рабочего пространства бесплатны. Сравните тарифы.
Попробуйте в следующем iFlow
Узнайте, что Kitegra добавляет к дизайнеру SAP Integration Suite, или посмотрите его рядом с другими расширениями Kitegra для Chrome.
Частые вопросы
Как вызвать HTTPS-эндпоинт SAP CPI с OAuth?
Получите токен по URL токенов из сервисного ключа с grant client credentials, затем вызовите эндпоинт с заголовком Authorization: Bearer и этим токеном.
Какой сервисный ключ нужен?
Сервисный ключ экземпляра Process Integration Runtime с сервисным планом integration-flow и ролью, которой разрешено отправлять сообщения.
Почему мой HTTPS iFlow возвращает 403?
Обычно роли ключа не разрешено отправлять сообщения, или отправитель HTTPS требует CSRF-токен.
Как найти сообщение, которое создал мой вызов?
Прочитайте заголовок ответа SAP_MessageProcessingLogID: это Message ID вызова.
Где HTTP Runner хранит мой сервисный ключ?
В вашем браузере. Синхронизированные коллекции никогда не содержат значений авторизации и секретных переменных.
HTTP Runner бесплатен?
Да. Он часть Toolbox, которая не учитывается в iFlow вашего тарифа.