Guzzle_PHP的HTTP客户端

矮脚虎
• 阅读 1894

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

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

文档参考地址:
https://guzzle-cn.readthedocs...
使用composer下载后目录结构如下:
Guzzle_PHP的HTTP客户端
简单的代码示例:

<?php
require 'vendor/autoload.php';
use GuzzleHttp\Client;
//https需开启php_openssl扩展
$client = new GuzzleHttp\Client([
    'base_uri' => 'http://ip.taobao.com/service/getIpInfo.php',
    'timeout'  => 3.0
]);
$response = $client->request('GET', 'http://ip.taobao.com/service/getIpInfo.php',[
     'query' => [ 'ip' => '202.108.31.224' ]
]);

$body = $response->getBody();
$remainingBytes = $body->getContents();
echo $remainingBytes;

若出现错误如下:
Fatal error: Uncaught GuzzleHttp\Exception\RequestException: cURL error 60: SSL certificate problem: unable to get local issuer certificate (see https://curl.haxx.se/libcurl/... in xxx.php
其原因是由于本地的CURL的SSL证书太旧了,导致不识别此证书。
解决方法如下:
http://curl.haxx.se/ca/cacert... 下载一个最新的证书。然后保存到一个任意目录,以Debian 9.X为例,我将证书文件保存到/etc/ssl/certs/cacert.pem,然后编辑php.ini,找到curl.cainfo,去掉curl.cainfo前面的注释“;”,然后在后面写上cacert.pem证书的完整路径及文件名,我的如下:
curl.cainfo = "/etc/ssl/certs/cacert.pem"
1
curl.cainfo = "/etc/ssl/certs/cacert.pem"
重启PHP服务,问题解决。(参考https://www.quyu.net/info/170...

点赞
收藏
评论区
推荐文章
liuzhen007 liuzhen007
4年前
Golang如何解析post请求中的json字符串
目录问题解决问题使用Golang开发服务器,最常用的使用场景之一就是处理各种http请求。那么我们如何使用Golang解析Post请求中的Json字符串呢?今天我们就来通过一个实例了解一下。解决首先,我们需要定义好对应的消息结构,也就是前端请求服务器的API接口。定义接口的话推荐使用工具YAPI编写,支持预
CuterCorley CuterCorley
4年前
uni-app入门教程(5)接口的基本使用
前言本文主要介绍uniapp提供的一些基础接口,包括:网络请求接口,用于通过指定的请求方法,携带特定的数据,向特定的地址请求并返回请求结果;图片处理接口,包括选择、预览、获取信息、保存到本地等接口;文件处理接口,包括文件上传和下载接口;数据缓存接口,包括以同步或异步的方式保存、获取或删除数据的接口。一、网络请求小程序要想正常运转,都需要与服务器端进
liam liam
2年前
PUT和POST的区别
PUT和POST是HTTP协议中两种常用的请求方法。它们有些相似之处,但也有一些重要的区别。在本文中,我们将详细介绍PUT和POST的区别。PUT请求PUT请求是HTTP协议中的一种请求方法,通常用于更新或替换服务器上的资源。使用PUT请求时,客户端需要将
Wesley13 Wesley13
3年前
JAVA 调用HTTP接口POST或GET实现方式
    HTTP是一个客户端和服务器端请求和应答的标准(TCP),客户端是终端用户,服务器端是网站。通过使用Web浏览器、网络爬虫或者其它的工具,客户端发起一个到服务器上指定端口(默认端口为80)的HTTP请求。具体POST或GET实现代码如下:package com.yoodb.util;import java.
Stella981 Stella981
3年前
Django初识(web框架,django下载安装,http协议)
一web框架的本质及自定义web框架我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,服务端按照http协议的响应协议来响应请求,这样的网络通信,我们就
Stella981 Stella981
3年前
Python使用grequests并发发送请求
\TOC\前言requests是Python发送接口请求非常好用的一个三方库,由K神编写,简单,方便上手快。但是requests发送请求是串行的,即阻塞的。发送完一条请求才能发送另一条请求。为了提升测试效率,一般我们需要并行发送请求。这里可以使用多线程,或者协程,gevent或者aiohttp,然而使用起来,都相对麻烦。greques
Wesley13 Wesley13
3年前
PHP封装CURL
CURL是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,我们使用它来发送HTTP请求。它给我们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS。CURL可以根据URL前缀是“HTTP”还是“HTTPS”自动选择是否加密发送内容。使用CURL的PHP扩展完成一个HTTP请求的发送一般有以下几个步骤
Stella981 Stella981
3年前
Http请求(Day03)
ServletRequest接口​在容器中接收到Web客户端的HTTP请求之后会先解析该请求,并创建与之相对应的请求对象和响应对象,而创建的请求对象的类型就是ServletRequest类型。1、ServletRequest​简单点说就是该接口封装了请求信息。可以从中获取
Stella981 Stella981
3年前
Django基础一之web框架的本质
一web框架的本质及自定义web框架我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端,基于请求做出响应,客户都先请求,服务端做出对应的响应,按照http协议的请求协议发送请求,服务端按照http协议的响应协议来响应请求,这样的网络通信,我们就可以自
HTTP请求:requests模块基础使用必知必会 | 京东云技术团队
http请求是常见的一种网页协议,我们看到的各种网页,其实都是发送了http请求得到了服务器的响应,从而将数据库中复杂的数据以简单、直观的方式呈现出来,方便大众阅读、使用。而如何发送http请求呢?今天来探讨一下使用requests模块,达到高效、简单的http请求操作。