【项目推荐】Guzzle - 简单易用的 PHP HTTP 客户端
Guzzle 介绍
Guzzle 是一款简单、易用的 PHP HTTP 客户端。
它可以快速的集成到 WEB 项目中,帮助我们非常方便的发送 HTTP 请求。
Guzzle 特点
接口简单
支持使用 curl,PHP streams,sockets等各种方式。
支持同步和异步请求
遵循 PSR7 规范,可以集成其他的符合 psr7 规范的类库,自定义处理逻辑
安装
使用 composer 安装,非常方便
composer require --prefer-dist guzzlehttp/guzzle
快速入门
1.初始化客户端
use GuzzleHttp\Client; options = [ 'base_uri' => 'http://guzzle.testhttp.com', 'connect_timeout' => 1, 'timeout' => 3, ]; $client = new Client($options);
2.发送body请求
$client->request('POST', '/post', ['body' => 'this is post body']);
3.发送表单请求
$client->request('POST', '/post', [ 'form_params' => [ 'user_id' => 1, 'user_name' => 'hello world!' ] ]);
4.json 请求
$client->request('POST', '/post', ['json' => ['data' => 'hello world!']]);
5.使用cookie
$params = ['json' => ['data' => 'hello world!']]; $cookieJar = CookieJar::fromArray(['cookieName' => 'testCookie'], 'guzzle.testhttp.com'); $param['cookies'] = $cookieJar; $client->request('POST', '/post', $params);
6.multipart
$client->request('POST', '/post', [ 'multipart' => [ [ 'name' => 'baz', 'contents' => fopen('/path/to/file', 'r') ], [ 'name' => 'qux', 'contents' => fopen('/path/to/file', 'r'), 'filename' => 'custom_filename.txt' ], ] ]);
7.异步请求
use Psr\Http\Message\ResponseInterface; use GuzzleHttp\Exception\RequestException; $promise = $client->requestAsync('POST', '/post', ['json' => ['data' => 'hello world!']]); $promise->then( function (ResponseInterface $res) { echo $res->getStatusCode() . "\n"; }, function (RequestException $e) { echo $e->getMessage() . "\n"; echo $e->getRequest()->getMethod(); } );
8.并发请求
use GuzzleHttp\Client; use GuzzleHttp\Promise; $client = new Client(['base_uri' => 'http://guzzle.testhttp.com/']); // Initiate each request but do not block $promises = [ 'a' => $client->requestAsync('POST', '/post', ['json' => ['data' => 'hello test1!']]), 'b' => $client->requestAsync('POST', '/post', ['json' => ['data' => 'hello test2!']]), 'b' => $client->requestAsync('POST', '/post', ['json' => ['data' => 'hello test3!']]), ]; // Wait on all of the requests to complete. $results = Promise\unwrap($promises); // You can access each result using the key provided to the unwrap // function. echo $results['a']->getBody()->getContents(); // body 也有实现 __toString()调用getContents() echo $results['b']->getHeader('Content-Length');
附录
相关推荐
wmsjlihuan 2020-09-15
shishengsoft 2020-09-15
Guanjs0 2020-11-09
poplpsure 2020-08-17
CyborgLin 2020-08-15
Richardxx 2020-07-26
sunnyhappy0 2020-07-26
knightwatch 2020-07-19
wcqwcq 2020-07-04
chichichi0 2020-06-16
YAruli 2020-06-13
JF0 2020-06-13
84423067 2020-06-12
心丨悦 2020-06-11
zkwgpp 2020-06-04
stoneechogx 2020-06-04
litterfrog 2020-05-30
today0 2020-05-26