unofficialmc2 / http-client
使用CUrl的HTTP客户端
v2.1.0
2024-09-26 13:24 UTC
Requires
- php: ^8.3
- ext-curl: *
- ext-json: *
- ext-openssl: *
- psr/log: ^3.0
Requires (Dev)
- monolog/monolog: ^3.0
- ocramius/package-versions: ^2.1
- phpstan/phpstan: ^1.8
- phpunit/phpunit: ^11.3
- squizlabs/php_codesniffer: ^3.7
- symfony/process: ^7.1
README
使用CUrl的HTTP客户端
安装
composer require unofficialmc2/http-client
使用
HttpClient
同步请求
<?php $logger = new \Monolog\Logger('test'); $client = new \HttpClient\HttpClient($logger); $response = $client->curlUnique('https://exemple.net/path', \HttpClient\HttpMethod::GET, []); $response->isSuccess(); // true $response->isRedirect(); // false $response->isCode(404); // false $response->getHeaders(); // [ ... ] $response->getHeader('type-content'); // 'application/json' $response->getData(); // ['message' => 'lorem ipsum'] $response->getData(true); // ['message' => 'lorem ipsum'] $response->getData(false); // {"message": "lorem ipsum"}
异步请求
<?php $logger = new \Monolog\Logger('test'); $client = new \HttpClient\HttpClient($logger); $refRequest1 = $client->addParamRequest('https://exemple.net/info', \HttpClient\HttpMethod::GET, []); $refRequest2 = $client->addParamRequest('https://exemple.com/info', \HttpClient\HttpMethod::GET, []); $client->execAll(); $client->waitResult(); $response = $client->getResult($refRequest1); $response->isSuccess(); // true $response = $client->getResult($refRequest2); $response->isSuccess(); // true
HttpClient
模板
同步请求
<?php $client = new \HttpClientStub\HttpClient(); $client->addResult( 200, ['type-content'=>'application/json'], ['message' => 'lorem ipsum'] ); $response = $client->curlUnique('https://exemple.net/path', \HttpClient\HttpMethod::GET, []); $response->isSuccess(); // true
可以为客户端记录多个结果。结果将依次循环返回。
异步请求
<?php $client = new \HttpClientStub\HttpClient(); $client->addResult( 200, ['type-content'=>'application/json'], json_encode(['message' => 'lorem ipsum']) ); $client->addResult(false, [], ''); $refRequest1 = $client->addParamRequest('https://exemple.net/info', \HttpClient\HttpMethod::GET, []); $refRequest2 = $client->addParamRequest('https://exemple.com/info', \HttpClient\HttpMethod::GET, []); $client->execAll(); $client->waitResult(); $response = $client->getResult($refRequest2); $response->isSuccess(); // false $response = $client->getResult($refRequest1); $response->isSuccess(); // true
可以为客户端记录多个结果。结果将依次循环分配给添加的请求。