Обычно, когда мы хотим сделать внешний запрос, мы используем для этой цели cURL. Настройка cURL довольно громоздка, и в принципе сложно держать в голове все необходимые настройки.
Также существуют серверы без поддержки cURL, а значит ваш код работать не будет. В таких случаях вам понадобится запасной вариант. Используя Joomla, довольно легко настроить cURL и все необходимые резервные соединения в одной строке кода.
Этот код вызывает драйвер Joomla Http, который разрешает исходящие запросы к внешним URL-адресам.use Joomla\CMS\Http\HttpFactory; $http = HttpFactory::getHttp(null, ['curl', 'stream']);
Этот драйвер использует драйверы транспорта в указанном порядке: в данном случае сначала cURL (если доступен), а затем поток.
В Joomla 3 «из коробки» доступны 3 драйвера транспорта:
- КУЛЬ
- разъем
- транслировать
Создать звонок
HttpFactory в Joomla 3 поддерживает следующие типы HTTP-запросов:- удалить
- получать
- голова
- параметры
- пластырь
- почта
- помещать
- след
- URL — URL вызова, конечная точка.
- Данные — массив данных, отправляемых в запросе.
- Заголовки — заголовки http-запроса.
Может использоваться, например, для авторизации.
- Таймаут – установка определенного таймаута для запроса.
$answer = $http->post($url);
POST-запрос с данными
$answer = $http->post($url, ['foo' => 'bar']);
Добавление параметров запроса
HttpFactory может добавлять параметры конфигурации для драйвера транспорта.Для этого необходимо создать массив, где ключом является опция, а значением — значение опции соответственно.
Ниже приведены примеры вариантов cURL. Полный список на PHP-документация .
$curlOptions = array();
$curlOptions[CURLOPT_SSL_VERIFYHOST] = false;
Далее мы добавляем массив с опциями с помощью метода setOption().
$http->setOption('transport.curl', $curlOptions);
Токены аутентификации в заголовках запросов
Joomla может взаимодействовать с внешним миром, получая или отправляя данные.Многим службам требуются заголовки запросов с токенами аутентификации.
Более подробная информация в Обзор методов и протоколов аутентификации в веб-приложениях .
Добавить нужные заголовки очень просто.
Создаем массив с необходимыми заголовками, а затем указываем его при создании Http-запроса.
if(!empty($access_token) && !empty($user_key)){
$headers = array(
'Authorization' => 'AccessToken '.
$access_token, 'Content-Type' => 'application/json', 'charset' => 'UTF-8', 'X-User-Authorization'=> 'Basic '.
$user_key
);
if(!is_null($data)){
$headers['Content-Length'] = strlen($data);
}
Теги: #api #разработка веб-сайтов #php #http #интеграция #joomla #CMS #http заголовки #интеграция сервисов #http запрос
-
Гибкость В Работе С Аутсорсингом
19 Oct, 24 -
Yiiconf 2012, Киев
19 Oct, 24 -
Создание Exe-Приложений На Php
19 Oct, 24 -
Секреты Дизайна Проектов Web 2.0
19 Oct, 24