在写后台代码时,避免不了需要与其他第三方接口交互,如向服务号下发模板消息,有时可能需要下发超过 10 万条。这时不得不考虑使用异步和「多线程」的网络请求。
今天向 PHP 工程师们推荐一个 Guzzle 插件。
Guzzle
Guzzle 是一个 PHP 的 HTTP 客户端,用来轻而易举地发送请求,并集成到我们的 WEB 服务上。
- 接口简单:构建查询语句、POST 请求、分流上传下载大文件、使用 HTTP COOKIEs、上传 JSON 数据等等。
- 发送同步或异步的请求均使用相同的接口。
- 使用 PSR-7 接口来请求、响应、分流,允许你使用其他兼容的 PSR-7 类库与 Guzzle 共同开发。
- 抽象了底层的 HTTP 传输,允许你改变环境以及其他的代码,如:对 cURL与 PHP 的流或 socket 并非重度依赖,非阻塞事件循环。
- 中间件系统允许你创建构成客户端行为。
摘自 Guzzle 官网介绍:
http://guzzle-cn.readthedocs.io/zh_CN/latest/index.html
安装 Guzzle
本文结合 Laravel 项目介绍 Guzzle 基本使用,所以使用 composer 来安装 Guzzle 再适合不过了,而且 Guzzle 官网也推荐使用 composer 来安装。
composer require guzzlehttp/guzzle:~6.0// 或者php composer.phar require guzzlehttp/guzzle:~6.0
如何安装 Composer,可以看看我之前的文章
https://d.laravel-china.org/docs/5.5/installation
发送简单的 POST 请求
访问第三方接口,基本上都是 POST 请求为主。如你想做一个简单的智能聊天工具,这时候可以借助图灵机器人 API,发送一个 POST 请求获取自动回答内容,直接上代码:
use Illuminate\Http\Request;class GuzzleUseController extends Controller {public function tuling(Request $request) {$params = ['key' => '*****','userid' => 'yemeishu'];$params['info'] = $request->input('info', '你好吗');$client = new Client();$options = json_encode($params, JSON_UNESCAPED_UNICODE);$data = ['body' => $options,'headers' => ['content-type' => 'application/json']];// 发送 post 请求$response = $client->post('http://www.tuling123.com/openapi/api', $data);$callback = json_decode($response->getBody()->getContents());return $this->output_json('200', '测试图灵机器人返回结果', $callback);}
}
Guzzle client->post 函数还是很简单的,只需要访问的接口,和请求的参数,参数中主要包含:body、headers、query等,具体可参考
http://guzzle-cn.readthedocs.io/zh_CN/latest/quickstart.html#id8
测试下:
也很感谢您能看到这了