HTTP коннектор

Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine

В Camunda Connect существует класс Connectors, который автоматически обнаруживает каждый коннектор в classpath. Его можно использовать, чтобы получить экземпляр HTTP коннектора по его connector ID, который равен http-connector.

HttpConnector http = Connectors.getConnector(HttpConnector.ID);

Конфигурируем Apache HTTP клиент

Camunda Connect HTTP клиент использует Apache HTTP клиент, чтобы отправлять HTTP запросы. Соответственно, он поддерживает те же самые опции конфигурации.

Кастомизированная конфигурация

Если вы хотите переконфигурировать клиент и выйти за пределы опций конфигурации по умолчанию, например, вы хотите сконфигурировать другой менеджер соединений, самый простой способ сделать это — это зарегистрировать новый конфигуратор коннекторов.

package io.openbpm.connect.example;

import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager;
import io.openbpm.connect.httpclient.HttpConnector;
import io.openbpm.connect.httpclient.impl.AbstractHttpConnector;
import io.openbpm.connect.spi.ConnectorConfigurator;

public class HttpConnectorConfigurator implements ConnectorConfigurator<HttpConnector> {

  public Class<HttpConnector> getConnectorClass() {
    return HttpConnector.class;
  }

  public void configure(HttpConnector connector) {
    PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
    connectionManager.setDefaultMaxPerRoute(10);
    connectionManager.setMaxTotal(200);

    CloseableHttpClient client = HttpClients.custom()
      .setConnectionManager(connectionManager)
      .build();
    ((AbstractHttpConnector) connector).setHttpClient(client);
  }

}

Чтобы разрешить автоматическую детекцию вашего нового конфигуратора, добавьте файл, называемый io.openbpm.connect.spi.ConnectorConfigurator к вашему каталогу resources/META-INF/services с именем класса в качестве контента. Для получения более подробной информации см. раздел расширение Connect.

io.openbpm.connect.example.HttpConnectorConfigurator

МИГРАЦИЯ APACHE HTTP CLIENT 5.X

Начиная с Camunda 7.24, Connect HTTP коннектор использует Apache HTTP Client 5.x.В то время как высокоуровневый Connect API остается тем же, кастомизированные конфигурации и расширения долдны использовать новые пакеты HttpClient 5.x (org.apache.hc.client5.* и org.apache.hc.core5.*) вместо предшествовавших им пакетов 4.x (org.apache.http.*).

Запросы

Создание простого HTTP запроса

HTTP коннектор может использоваться для создания нового запроса, установки HTTP метода, URL, content type и рабочей нагрузки.

Простой GET-запрос:

http.createRequest()
  .get()
  .url("http://camunda.org")
  .execute();

Запрос типа POST с установленными content type и рабочей нагрузкой:

http.createRequest()
  .post()
  .url("http://camunda.org")
  .contentType("text/plain")
  .payload("Hello World!")
  .execute();

HTTP методы PUT, DELETE, PATCH, HEAD, OPTIONS, TRACE также доступны.

Добавление HTTP заголовков к запросу

Чтобы добавить собственные заголовки к HTTP запросу, доступен метод header.

HttpResponse response = http.createRequest()
  .get()
  .header("Accept", "application/json")
  .url("http://camunda.org")
  .execute();

Включение обработки ошибок в HTTP ответе

По умолчанию, HTTP коннектор не может хорошо обрабатывать ошибки в ответе, относящиеся к версиям 4XX м 5XX во время HTTP вызова. Чтобы активировать обработку этих ошибок без написания дополнительных скриптов, у становите свойство throw-http-error в значение TRUE через метод configOption. Как только эта опция станет доступной, клиент начнет выбрасывать исключения в случае ошибок в HTTP ответе (коды статуса 400-599).

HttpResponse response = http.createRequest()
  .get()
  .configOption("throw-http-error", "TRUE")
  .url("http://camunda.org")
  .execute();

Использование API общего назначения

Помимо методов для конфигурации, существует также API общего назначения (generic) для установки параметров запроса. Доступны следующие параметры:

Параметр Описание

method

Устанавливает HTTP метод запроса

url

Устанавливает URL запроса

headers

Содержит map сконфигурированных HTTP заголовков запроса

payload

Устанавливает рабочую нагрузку (payload) запроса

Это можно использовать следующим образом:

HttpRequest request = http.createRequest();
request.setRequestParameter("method", "GET");
request.setRequestParameter("url", "http://camunda.org");
request.setRequestParameter("payload", "hello world!");

Ответ

Ответ содержит код статуса, заголовки ответа и тело.

Integer statusCode = response.getStatusCode();
String contentTypeHeader = response.getHeader("Content-Type");
String body = response.getResponse();

После обработки ответа он должен быть закрыт.

response.close()

Использование API общего назначения

Помимо методов ответа, предоставляется API общего назначения для сбора параметров запроса. Доступны следующие параметры:

Параметр Описание

statusCode

Содержит код статуса ответа

headers

Содержит map с HTTP заголовками ответа

response

Содержит тело ответа

Это можно использовать следующим образом:

response.getResponseParameter("statusCode");
response.getResponseParameter("headers");
response.getResponseParameter("response");

Лицензия и атрибуция

Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .

Оригинал документации: https://docs.camunda.org