EasyHttp — это легковесный, семантический и удобный для IDE HTTP-клиент, поддерживающий обычные HTTP-запросы, асинхронные запросы и параллельные запросы, что позволяет быстро взаимодействовать с другими веб-приложениями через HTTP.
EasyHttp не требует обязательной установки cURL; если cURL отсутствует, он автоматически выбирает использование PHP-потока, либо вы можете предоставить свой способ отправки HTTP-запросов.
Если вам понравился EasyHttp, не забудьте поставить лайк ^_^!
github: github.com/gouguoyin/easyhttp
gitee: gitee.com/gouguoyin/easyhttp
composer require gouguoyin/easyhttp
$response = Http::get('http://httpbin.org/get');
$response = Http::get('http://httpbin.org/get?name=gouguoyin');
$response = Http::get('http://httpbin.org/get?name=gouguoyin', ['age' => 18]);
$response = Http::post('http://httpbin.org/post');
$response = Http::post('http://httpbin.org/post', ['name' => 'gouguoyun']);
$response = Http::patch(...);
$response = Http::put(...);
$response = Http::delete(...);
$response = Http::head(...);
$response = Http::options(...);
// application/x-www-form-urlencoded (по умолчанию)
$response = Http::asForm()->post(...);
```// application/json
$response = Http::asJson()->post(...);
$response = Http::asMultipart(
'file_input_name', file_get_contents('photo1.jpg'), 'photo2.jpg'
)->post('http://test.com/attachments');
$response = Http::asMultipart(
'file_input_name', fopen('photo1.jpg', 'r'), 'photo2.jpg'
)->post(...);
$response = Http::attach(
'file_input_name', file_get_contents('photo1.jpg'), 'photo2.jpg'
)->post(...);
$response = Http::attach(
'file_input_name', fopen('photo1.jpg', 'r'), 'photo2.jpg'
)->post(...);
Атрибут
enctype
формы должен быть установлен какmultipart/form-data
.
$response = Http::withHeaders([
'x-powered-by' => 'gouguoyin'
])->post(...);
// По умолчанию
$response = Http::withRedirect(false)->post(...);
$response = Http::withRedirect([
'max' => 5,
Yöntem => false,
'referer' => true,
'protocols' => ['http', 'https'],
'track_redirects' => false
])->post(...);
// Аутентификация Basic
$response = Http::withBasicAuth('username', 'password')->post(...);
// Аутентификация Digest (требует поддержки HTTP-сервером)
$response = Http::withDigestAuth('username', 'password')->post(...);
$response = Http::withUA('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3100.0 Safari/537.36')->post(...);
$response = Http::withToken('token')->post(...);
$response = Http::withCert('/path/server.pem', 'password')->post(...);
// По умолчанию
$response = Http::withVerify(false)->post(...);
$response = Http::withVerify('/path/to/cert.pem')->post(...);
```###### Запрос с передачей cookies
```php
$response = Http::withCookies(array $cookies, string $domain)->post(...);
$response = Http::withVersion(1.1)->post(...);
$response = Http::withProxy('tcp://localhost:8125')->post(...);
$response = Http::withProxy([
'http' => 'tcp://localhost:8125', // Используйте этот прокси для HTTP
'https' => 'tcp://localhost:9124', // Используйте этот прокси для HTTPS,
'no' => ['.com.cn', 'gouguoyin.cn'] // Не используйте прокси для этих доменов
])->post(...);
$response = Http::timeout(60)->post(...);
$response = Http::delay(60)->post(...);
$response = Http::concurrency(10)->promise(...);
use Gouguoyin\EasyHttp\Response;
use Gouguoyin\EasyHttp\RequestException;
Http::getAsync('http://easyhttp.gouguoyin.cn/api/sleep3.json', ['token' => TOKEN], function (Response $response) {
echo 'Асинхронный запрос выполнен успешно, содержимое ответа: ' . $response->body() . PHP_EOL;
}, function (RequestException $e) {
echo 'Асинхронный запрос завершился ошибкой, код ошибки: ' . $e->getCode() . ', сообщение об ошибке: ' . $e->getMessage() . PHP_EOL;
});
echo json_encode(['code' => 200, 'msg' => 'Запрос выполнен успешно'], JSON_UNESCAPED_UNICODE) . PHP_EOL;
// Ответ {"code":200,"msg":"Запрос выполнен успешно"} Асинхронный запрос выполнен успешно, содержимое ответа: {"code":200,"msg":"success","second":3}Http::getAsync('http://easyhttp.gouguoyin.cn/api/sleep3.json', function (Response $response) { echo 'Асинхронный запрос выполнен успешно, содержимое ответа:' . $response->body() . PHP_EOL; }, function (RequestException $e) { echo 'Асинхронный запрос завершился ошибкой, сообщение об ошибке:' . $e->getMessage() . PHP_EOL; }); echo json_encode(['code' => 200, 'msg' => 'Запрос выполнен успешно'], JSON_UNESCAPED_UNICODE) . PHP_EOL;// Ответ {"code":200,"msg":"Запрос выполнен успешно"}
Асинхронный запрос завершился ошибкой, сообщение об ошибке: cURL error 1: Protocol "http1" not supported or disabled in libcurl (смотрите https://curl.haxx.se/libcurl/c/libcurl-errors.html)
Http::postAsync(...);
Http::patchAsync(...);
Http::putAsync(...);
Http::deleteAsync(...);
Http::headAsync(...);
Http::optionsAsync(...);
use Gouguoyin\EasyHttp\Response;
use Gouguoyin\EasyHttp\RequestException;
$promises = [
Http::getAsync('http://easyhttp.gouguoyin.cn/api/sleep3.json'),
Http::getAsync('http1://easyhttp.gouguoyin.cn/api/sleep1.json', ['name' => 'gouguoyin']),
Http::postAsync('http://easyhttp.gouguoyin.cn/api/sleep2.json', ['name' => 'gouguoyin']),
];
Http::concurrency(10)->multiAsync($promises, function (Response $response, $index) {
echo "Выполнен асинхронный запрос №$index, время выполнения:" . $response->json()->second . ' секунд' . PHP_EOL;
}, function (RequestException $e, $index) {
echo "Асинхронный запрос №$index завершился ошибкой, причина ошибки:" . $e->getMessage() . PHP_EOL;
});
// Ответ
Асинхронный запрос №1 завершился ошибкой, причина ошибки: cURL error 1: Protocol "http1" not supported or disabled in libcurl (смотрите https://curl.haxx.se/libcurl/c/libcurl-errors.html)
Выполнен асинхронный запрос №2, время выполнения: 2 секунды
Выполнен асинхронный запрос №0, время выполнения: 3 секунды
Если метод
concurrency()
не был вызван, количество параллельных запросов по умолчанию равно количеству элементов в массиве$promises
.
При получении ответа возвращается экземпляр класса Gouguoyin\EasyHttp\Response
$response
, который предоставляет следующие методы для проверки ответа:```php
$response->body() : string;
$response->json() : object;
$response->array() : array;
$response->status() : int;
$response->ok() : bool;
$response->successful() : bool;
$response->serverError() : bool;
$response->clientError() : bool;
$response->headers() : array;
$response->header($header) : string;
## Обработка ошибок
Запрос может выбрасывать исключение `Gouguoyin\EasyHttp\RequestException $e` при возникновении ошибок как на клиентской, так и на серверной стороне. Экземпляр этого исключения предоставляет следующие методы для получения информации об ошибке:
```php
$e->getCode() : int;
$e->getMessage() : string;
$e->getFile() : string;
$e->getLine() : int;
$e->getTrace() : array;
$e->getTraceAsString() : string;
get()
и getAsync()
withUA()
withStream()
asMultipart()
как альтернативное название для attach()
multiAsync()
для асинхронных параллельных запросовgetAsync()
для асинхронных GET-запросовpostAsync()
для асинхронных POST-запросовpatchAsync()
для асинхронных PATCH-запросовputAsync()
для асинхронных PUT-запросовdeleteAsync()
для асинхронных DELETE-запросовheadAsync()
для асинхронных HEAD-запросовoptionsAsync()
для асинхронных OPTIONS-запросов## Список задачВы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )