好用的 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. ]);

….

官方手册

官方手册

夜河资源网提供的所有内容仅供学习与交流。通过使用本站内容随之而来的风险以及法律责任与本站无关,所承担的法律责任由使用者承担。
一、如果您发现本站侵害了相关版权,请附上本站侵权链接和您的版权证明一并发送至邮箱:yehes#qq.com(#替换为@)我们将会在五天内处理并断开该文章下载地址。
二、本站所有资源来自互联网整理收集,全部内容采用撰写共用版权协议,要求署名、非商业用途和相同方式共享,如转载请也遵循撰写共用协议。
三、根据署名-非商业性使用-相同方式共享 (by-nc-sa) 许可协议规定,只要他人在以原作品为基础创作的新作品上适用同一类型的许可协议,并且在新作品发布的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与该作品在本网站的原发地址建立链接,他人就可基于非商业目的对原作品重新编排、修改、节选或者本人的作品为基础进行创作和发布。
四、基于原作品创作的所有新作品都要适用同一类型的许可协议,因此适用该项协议, 对任何以他人原作为基础创作的作品自然同样都不得商业性用途。
五、根据二〇〇二年一月一日《计算机软件保护条例》规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可不经软件著作权人许可,无需向其支付报酬!
六、鉴此,也望大家按此说明转载和分享资源!本站提供的所有信息、教程、软件版权归原公司所有,仅供日常使用,不得用于任何商业用途,下载试用后请24小时内删除,因下载本站资源造成的损失,全部由使用者本人承担!