andrey-tech/http-client-php
Composer 安装命令:
composer require andrey-tech/http-client-php
包简介
Простой НТТР(S) клиент на PHP7+ с троттлингом запросов и поддержкой маркера BOM в теле сообщения формата JSON
关键字:
README 文档
README
Простой НТТР(S) клиент на PHP7+ с троттлингом запросов, поддержкой маркера BOM в теле сообщения формата JSON и выводом отладочной информации о запросах и ответах в STDOUT.
Содержание
Требования
- PHP >= 7.0;
- Произвольный автозагрузчик классов, реализующий стандарт PSR-4.
Установка
Установка через composer:
$ composer require andrey-tech/http-client-php:"^3.0"
или добавить
"andrey-tech/http-client-php": "^3.0"
в секцию require файла composer.json.
Класс HTTP
Класс \App\HTTP\НТТР обеспечивает:
- выполнение запросов по протоколу НТТР(S);
- настраиваемый троттлинг запросов;
- проверку SSL/TLS-сертификата сервера c возможностью ее отключения;
- удаление или добавление маркера ВОМ в тело сообщений формата JSON;
- вывод отладочной информации о запросах и ответах в STDOUT.
При возникновении ошибок выбрасывается исключение класса \App\HTTP\HTTPException.
Методы класса
__construct()Конструктор класса.request(string $url, string $method = 'GET', array $params = [], array $requestHeaders = [], array $curlOptions = []) :?array
Отправляет запрос по протоколу HTTP(S). Возвращает декодированный ответ сервера илиnullпри возникновении ошибки cURL.$url- URL запроса;$method- метод запроса;$params- параметры запроса;$curlOptions- дополнительные параметры для cURL.
isSuccess(array $successStatusCodes = []) :boolВозвращает статус успешности выполнения запроса.$successStatisCodesКоды статуса НТТР, соответствующие успешному выполнению запроса. Если не передан, то используется значение по умолчанию, установленное в свойстве$successStatusCodes.
getHTTPCode() :intВозвращает код статуса HTTP для последнего запроса.getResponse() :?stringВозвращает тело последнего ответа в сыром виде.getResponseHeaders() :arrayВозвращает заголовки последнего ответа.getCurlInfo() :arrayВозвращает информацию о последней операции cURL.
Параметры
Дополнительные параметры устанавливаются через публичные свойства объекта класса \App\HTTP\HTTP:
| Свойство | По умолчанию | Описание |
|---|---|---|
$debugLevel |
\App\HTTP\HTTP::DEBUG_NONE |
Устанавливает уровень вывода отладочной информации о запросах в STDOUT (битовая маска, составляемая из значений DEBUG_NONE, DEBUG_URL, DEBUG_HEADERS, DEBUG_CONTENT) |
$throttle |
0 | Максимальное число HTTP запросов в секунду (0 - троттлинг отключен) |
$addBOM |
false | Добавлять маркер ВОМ UTF-8 (EFBBBF) к запросам в формате JSON |
$useCookies |
false | Использовать cookies в запросах |
$cookieFile |
'temp/cookies.txt' | Путь к файлу для хранения cookies |
$verifySSLCertificate |
true | Включить проверку SSL/TLS-сертификата сервера |
$SSLCertificateFile |
'cacert.pem' | Устанавливает файл SSL/TLS-сертификатов X.509 корневых удостоверяющих центров (CA) в формате РЕМ (установка в null означает использовать файл, указанный в параметре curl.cainfo файла php.ini) |
$userAgent |
'HTTP-client/3.x.x' | Устанавливает НТТР заголовок UserAgent в запросах |
$curlConnectTimeout |
60 | Устанавливает таймаут соединения, секунды |
$curlTimeout |
60 | Устанавливает таймаут обмена данными, секунды |
$successStatusCodes |
[ 200 ] | Коды статуса НТТР, соответствующие успешному выполнению запроса |
Пример
use App\HTTP\HTTP; use App\HTTP\HTTPException; try { // Создаем клиента $http = new HTTP(); // Устанавливаем максимальный уровень вывода отладочных сообщений в STDOUT $http->debugLevel = HTTP::DEBUG_URL | HTTP::DEBUG_HEADERS | HTTP::DEBUG_CONTENT; // Устанавливаем троттлинг запросов на уровне не более 1 запроса в 2 секунды $http->throttle = 0.5; // Устанавливаем таймаут соединения в 30 секунд $http->curlConnectTimeout = 30; // Устанавливаем таймаут обмена данными в 30 секунд $http->curlTimeout = 30; // Отправляем POST запрос $response = $http->request( $url = 'https://www.example.com', $method = 'POST', $params = [ 'username' => 'ivan@example.com', 'password' => '1234567890' ], $requestHeaders = [ 'Content-Type: application/json' ] ); // Проверяем НТТР статус ответа if (! $http->isSuccess()) { $httpCode = $http->getHTTPCode(); $response = $http->getResponse(); throw new HTTPException("HTTP {$httpCode}: {$response}"); } print_r($response); } catch (HTTPException $e) { printf('Ошибка (%d): %s' . PHP_EOL, $e->getCode(), $e->getMessage()); }
Пример отладочных сообщений:
[1] ===> POST https://www.example.com
POST / HTTP/1.1
Host: www.example.com
User-Agent: HTTP-client/3.x.x
Accept: */*
Content-Type: application/json
Content-Length: 55
{"username":"ivan@example.com","password":"1234567890"}
[1] <=== RESPONSE 0.9269s (200)
HTTP/1.1 200 OK
Accept-Ranges: bytes
Cache-Control: max-age=604800
Content-Type: text/html; charset=UTF-8
Date: Sun, 14 Jun 2020 13:09:33 GMT
Etag: "3147526947"
Expires: Sun, 21 Jun 2020 13:09:33 GMT
Last-Modified: Thu, 17 Oct 2019 07:18:26 GMT
Server: EOS (vny/0453)
Content-Length: 1256
<!doctype html>
<html>
<head>
<title>Example Domain</title>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this
domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
Автор
© 2019-2026 andrey-tech
Лицензия
Данная библиотека распространяется на условиях лицензии MIT.
andrey-tech/http-client-php 适用场景与选型建议
andrey-tech/http-client-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 80.07k 次下载、GitHub Stars 达 3, 最近一次更新时间为 2020 年 06 月 14 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「debug」 「http」 「client」 「https」 「throttling」 「bom」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 andrey-tech/http-client-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 andrey-tech/http-client-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 andrey-tech/http-client-php 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
repository php library
Debug your SimpleBus EventBus and CommandBus
nice output for debug functions for PHP 5.3
Analysis module for finding problematical shop data.
Twig extensions for Tracy Debugger
Mock PSR-18 HTTP client
统计信息
- 总下载量: 80.07k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 30
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2020-06-14