好用的PHP Curl扩展工具Guzzle

热门标签

, , , , , , , , , , , , , ,
admin

发表文章数:3203

好用的PHP Curl扩展工具Guzzle

项目中使用第三方接口时,我们可以用封装好的工具—-Guzzle。

Guzzle是一个PHP的 HTTP 客户端,用来轻而易举地发送请求,并集成到我们的 WEB 服务上。

接口简单:构建查询语句、POST 请求、分流上传下载大文件、使用 HTTP cookies、上传JSON 数据等等。
发送同步或异步的请求均使用相同的接口。
使用 PSR-7 接口来请求、响应、分流,允许你使用其他兼容的 PSR-7 类库与Guzzle共同开发。
抽象了底层的 HTTP 传输,允许你改变环境以及其他的代码,如:对 cURL 与PHP的流或 socket 并非重度依赖,非阻塞事件循环。
中间件系统允许你创建构成客户端行为。

Composer 安装

  1. composer require guzzlehttp/guzzle

简单的例子

创建客户端

  1. use GuzzleHttp\Client;
  2.  
  3. $client = new Client([
  4. // Base URI is used with relative requests
  5. \’base_uri\’ => \’http://httpbin.org\’,
  6. // You can set any number of default request options.
  7. \’timeout\’ => 2.0,
  8. ]);

发送请求

  1. $response = $client->get(\’http://httpbin.org/get\’);
  2. $response = $client->delete(\’http://httpbin.org/delete\’);
  3. $response = $client->head(\’http://httpbin.org/get\’);
  4. $response = $client->options(\’http://httpbin.org/get\’);
  5. $response = $client->patch(\’http://httpbin.org/patch\’);
  6. $response = $client->post(\’http://httpbin.org/post\’);
  7. $response = $client->put(\’http://httpbin.org/put\’);

你可以创建一个请求,一切就绪后将请求传送给 client:

  1. use GuzzleHttp\Psr7\Request;
  2.  
  3. $request = new Request(\’PUT\’, \’http://httpbin.org/put\’);
  4. $response = $client->send($request, [\’timeout\’ => 2]);

异步请求

  1. $promise = $client->getAsync(\’http://httpbin.org/get\’);
  2. $promise = $client->deleteAsync(\’http://httpbin.org/delete\’);
  3. $promise = $client->headAsync(\’http://httpbin.org/get\’);
  4. $promise = $client->optionsAsync(\’http://httpbin.org/get\’);
  5. $promise = $client->patchAsync(\’http://httpbin.org/patch\’);
  6. $promise = $client->postAsync(\’http://httpbin.org/post\’);
  7. $promise = $client->putAsync(\’http://httpbin.org/put\’);

并发请求

  1. use GuzzleHttp\Client;
  2. use GuzzleHttp\Promise;
  3.  
  4. $client = new Client([\’base_uri\’ => \’http://httpbin.org/\’]);
  5.  
  6. // Initiate each request but do not block
  7. $promises = [
  8. \’image\’ => $client->getAsync(\’/image\’),
  9. \’png\’ => $client->getAsync(\’/image/png\’),
  10. \’jpeg\’ => $client->getAsync(\’/image/jpeg\’),
  11. \’webp\’ => $client->getAsync(\’/image/webp\’)
  12. ];
  13.  
  14. // Wait on all of the requests to complete.
  15. $results = Promise\unwrap($promises);
  16.  
  17. // You can access each result using the key provided to the unwrap
  18. // function.
  19. echo $results[\’image\’]->getHeader(\’Content-Length\’);
  20. echo $results[\’png\’]->getHeader(\’Content-Length\’);

上传数据

  1. //Guzzle 为上传数据提供了一些方法。 你可以发送一个包含数据流的请求,将 body 请求参数设置成一个字符串、 fopen 返回的资源、或者一个 Psr\Http\Message\StreamInterface 的实例。
  2.  
  3. // Provide the body as a string.
  4. $r = $client->request(\’POST\’, \’http://httpbin.org/post\’, [
  5. \’body\’ => \’raw data\’
  6. ]);
  7.  
  8. // Provide an fopen resource.
  9. $body = fopen(\’/path/to/file\’, \’r\’);
  10. $r = $client->request(\’POST\’, \’http://httpbin.org/post\’, [\’body\’ => $body]);
  11.  
  12. // Use the stream_for() function to create a PSR-7 stream.
  13. $body = \GuzzleHttp\Psr7\stream_for(\’hello!\’);
  14. $r = $client->request(\’POST\’, \’http://httpbin.org/post\’, [\’body\’ => $body]);
  15. //上传 JSON 数据以及设置合适的头信息可以使用 json 请求参数这个简单的方式:
  16.  
  17. $r = $client->request(\’PUT\’, \’http://httpbin.org/put\’, [
  18. \’json\’ => [\’foo\’ => \’bar\’]
  19. ]);

….

官方手册

官方手册

未经允许不得转载:作者:admin, 转载或复制请以 超链接形式 并注明出处 夜河资源网
原文地址:《好用的PHP Curl扩展工具Guzzle》 发布于2019-12-23

分享到:
赞(0) 打赏

评论 抢沙发

6 + 5 =


撰写不易~如果您觉得文章对您有帮助的话可以打赏我哦~谢谢亲亲~

支付宝扫一扫打赏

微信扫一扫打赏

外服网游加速器破解版
包含腾讯网游加速器、海豚网游加速器等八款知名加速器,可加速外服游戏,永久包售后包更新,不定时添加新款破解版加速器!
切换注册

登录

忘记密码 ?

切换登录

注册