热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

推荐一个PHP网络请求插件Guzzle

在写后台代码时,避免不了需要与其他第三方接口交互,如向服务号下发模板消息,有时可能需要下发超过10万条。这时不得不考虑使用异步和「多线程」

在写后台代码时,避免不了需要与其他第三方接口交互,如向服务号下发模板消息,有时可能需要下发超过 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

测试下:

qrcode


也很感谢您能看到这了

qrcode



推荐阅读
  • 为PHP5安装curl和gd
    2019独角兽企业重金招聘Python工程师标准一、查看php5是否安装了curl:1在web服务器目录(Ubuntu下通常为varwww ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了markdown[软件代理设置]相关的知识,希望对你有一定的参考价值。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 如何查询zone下的表的信息
    本文介绍了如何通过TcaplusDB知识库查询zone下的表的信息。包括请求地址、GET请求参数说明、返回参数说明等内容。通过curl方法发起请求,并提供了请求示例。 ... [详细]
  • uniapp开发H5解决跨域问题的两种代理方法
    本文介绍了uniapp开发H5解决跨域问题的两种代理方法,分别是在manifest.json文件和vue.config.js文件中设置代理。通过设置代理根域名和配置路径别名,可以实现H5页面的跨域访问。同时还介绍了如何开启内网穿透,让外网的人可以访问到本地调试的H5页面。 ... [详细]
  • Request对象和Response对象request:(请求)当一个页面被请求时,Django就会创建一个包含本次请求原信息的HttpRequest对象。Djang ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Webmin远程命令执行漏洞复现及防护方法
    本文介绍了Webmin远程命令执行漏洞CVE-2019-15107的漏洞详情和复现方法,同时提供了防护方法。漏洞存在于Webmin的找回密码页面中,攻击者无需权限即可注入命令并执行任意系统命令。文章还提供了相关参考链接和搭建靶场的步骤。此外,还指出了参考链接中的数据包不准确的问题,并解释了漏洞触发的条件。最后,给出了防护方法以避免受到该漏洞的攻击。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • php7 curl_init(),php7.3curl_init获取301、302跳转后的数据
    最近在做一个蜘蛛项目,发现在抓取数据时,有时会碰到301的页面,原本写的curl_init函数php7-远程获取api接口或网页内容&#x ... [详细]
  • docker安装到基本使用
    记录docker概念,安装及入门日常使用Docker安装查看官方文档,在"Debian上安装Docker",其他平台在"这里查 ... [详细]
  • 表单代码 ... [详细]
  • linux下编译安装lnmp
    2019独角兽企业重金招聘Python工程师标准#######################安装依赖#####################安装必要的包:y ... [详细]
  • centos 编译安装 php 5.5,CentOS 5.5上编译安装 PHP 5.3.6
    编译并安装#make&&makeinstall安装结果摘要,里面有几个主要的安装路径变量libtool:install:warning:remembertorunli ... [详细]
author-avatar
萝莉控的小潴_515
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有