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