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’);附录项目地址官方文档中文文档
...