以往在项目中要用到第三方接口时会用到封装好的 curl 执行请求,现在有了更好的解决方案——Guzzle。
下面是官方介绍:

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

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

GET请求示例

$client = new GuzzleHttp\Client(); //初始化客户端
$response = $client->get('http://httpbin.org/get', [
            'query' => [		//get查询字符串参数组
                'a' => '参数a的值',
                'b' => '参数b的值',
            'timeout' => 3.14 //设置请求超时时间
        ]);
//       与上面一条等价
//        $response = $client->request('GET','http://httpbin.org/get', [
//            'query' => [        
//                'a' => '参数a的值',
//                'b' => '参数b的值',
//            ],
//            'timeout' => 3.14 
//        ]);
$body = $response->getBody(); //获取响应体,对象
$bodyStr = (string)$body; //对象转字串,这就是请求返回的结果
echo $bodyStr;

类似的请求方法还有:

$response = $client->get('http://httpbin.org/get');
$response = $client->delete('http://httpbin.org/delete');
$response = $client->head('http://httpbin.org/get');
$response = $client->options('http://httpbin.org/get');
$response = $client->patch('http://httpbin.org/patch');
$response = $client->post('http://httpbin.org/post');
$response = $client->put('http://httpbin.org/put');

POST请求示例

$client = new GuzzleHttp\Client();
//普通表单`application/x-www-form-urlencoded`的POST请求
$response = $client->post('http://httpbin.org/post', [
    'form_params' => [        //参数组
        'a' => 'aaa',
        'b' => 'bbb',
        'nested_field' => [		//参数允许嵌套多层
            'A' => 'AAA',
            'B' => 'BBB',
]);
        //包含文件上传的表单`multipart/form-data`的POST请求
//        $response = $client->post('http://httpbin.org/post', [
//            'multipart' => [		//注意这个参数组的键名与前一个不同
//                [
//                    'name' => 'a',		//字段名
//                    'contents' => 'aaa'	//对应的值
//                ],
//                [
//                    'name' => 'upload_file_name',		//文件字段名
//                    'contents' => fopen('/data/test.md', 'r') //文件资源
//                ],
//            ]
//        ]);
        $body = $response->getBody(); //获取响应体,对象
        $bodyStr = (string)$body; //对象转字串
        echo $bodyStr;

以上便是Guzzle的POST和GET请求的基本介绍,相信很多时间掌握这两个语法方法已经能满足项目开发的需求了。当然这只是强大的Guzzle功能中很小的一部份,感兴趣的同学想深入了解的可以参考官方文档。

Guzzle6中文文档参考

(end)

以往在项目中要用到第三方接口时会用到封装好的curl执行请求,现在有了更好的解决方案——Guzzle。下面是官方介绍:Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。接口简单:构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。发送同步或异步的请求均使用相同的接口。使用PSR-7接口来请求、... 语法:$.post(url,data,callback,type); url(必须):发送请求的地址,String类型 data(可选):发送给后台的数据,以key/value形式{a:value1,b:value2},即json格式 callback(可选):请求成功后的回调函数。因此,在后台的处理,需要给JSONObject put一个是否成功的值,见下面例子。 type(可选):即第二个参数data的数据类型。如果有dat AJAX = 异步 JavaScript 和 XML(Asynchronous JavaScript and XML)。 简短地说,就是在不刷新整个网页的情况下,能够动态的从后台加载数据,并在网页上进行显示。 使用 AJAX 的应用程序案例:谷歌地图、腾讯微博、优酷视频、人人网、淘宝天猫等等。 先看一个简单的Ajax的使用 function...
在jQuery,我们通常利用$.ajax或$.post进行数据传递处理,但这里通常不能传递特殊字符,如:“<”。本文就介绍如何传递这种含特殊字符的数据。 1、准备页面和控制端代码 页面代码如下: <script type="text/javascript"> $(function() { $("#b...
可以使用 Guzzle 库来实现 PHP 的 HTTP 客户端。Guzzle 支持高并发请求和连接池管理。可以通过它的客户端配置来控制连接池大小、并发请求数量等。 composer require guzzlehttp/guzzle 示例代码: $client = new GuzzleHttp\Client(); $response = $client->request('GET', 'http://httpbin.org/get'); echo $response->getStatusCode(); # 200 更多细节请参考 Guzzle 官方文档 : https://guzzle.readthedocs.io/en/latest/