内容简介:Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。Guzzle提供了简单的接口,构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。
Guzzle是一个 PHP 的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。Guzzle提供了简单的接口,构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。
安装
使用Composer安装:
composer require guzzlehttp/guzzle
或者编辑项目的composer.json文件,添加Guzzle作为依赖:
{ "require": { "guzzlehttp/guzzle": "~6.0" } }
然后执行 composer update
Guzzle基本使用
发送请求
use GuzzleHttp\Client; $client = new Client([ // Base URI is used with relative requests 'base_uri' => 'http://httpbin.org', // You can set any number of default request options. 'timeout' => 2.0, ]); $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');
设置查询字符串
$response = $client->request('GET', 'http://httpbin.org?foo=bar');
或使用 query
请求参数来声明查询字符串参数:
$client->request('GET', 'http://httpbin.org', [ 'query' => ['foo' => 'bar'] ]);
使用响应
获取状态码:
$code = $response->getStatusCode(); // 200 $reason = $response->getReasonPhrase(); // OK
判断头部信息:
if ($response->hasHeader('Content-Length')) { echo "It exists"; }
获取返回的头部信息:
echo $response->getHeader('Content-Length'); // Get all of the response headers. foreach ($response->getHeaders() as $name => $values) { echo $name . ': ' . implode(', ', $values) . "\r\n"; }
使用 getBody
方法可以获取响应的主体部分(body),主体可以当成一个字符串或流对象使用
$body = $response->getBody();
可以将返回体转换成字符串或者直接以字符串形式读取:
$stringBody = (string) $body; $content = $body->getContents();
上传文件
有时我们需要将文件传送到另一个web服务上去,可以使用post文件流形式将文件数据传送到指定web目录。
$filename = 'a.jpg'; $data = fopen($filename, 'r'); $res = $client->request('POST', 'http://localhost:9999/upload.php', ['body' => $data]); $body = $res->getBody(); print_r($body->getContents());
接收上传文件的upload.php可以这样写:
if ($_SERVER['REQUEST_METHOD'] == 'POST') { $data = file_get_contents('php://input'); $file = file_put_contents('b.jpg', $data); if (FALSE === $file) { echo '上传成功'; } else { echo '上传失败'; } }
提交表单
发送 application/x-www-form-urlencoded
POST请求需要你传入 form_params
数组参数,数组内指定POST的字段。
$res = $client->request('POST', 'http://localhost:9999/form.php', [ 'form_params' => [ 'field_name' => 'abc', 'other_field' => '123', 'nested_field' => [ 'nested' => 'hello' ] ] ]); $body = $res->getBody(); print_r((string)$body);
在接收端form.php使用 $_POST
即可获取上传的表单数据。
提交JSON数据
有时候我们在于API接口交互的时候需要将数据以特定的json格式传给api,可以这样写:
$res = $client->request('POST', 'http://localhost:9999/json.php', [ 'json' => ['foo' => 'bar'] ]); $body = $res->getBody(); print_r((string)$body);
接收端json.php使用 file_get_contents('php://input')
可获得提交的json数据。
使用Guzzle还可以发送异步请求以及并发请求,具体使用方法可参照 Guzzle官方文档 。
其实我们在一些特殊场景下可以使用Swoole的协程特性实现异步的http客户端,功能非常强大。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 以流的形式执行 Multipart 请求
- nginx+php执行请求的工作原理
- 网络通信5:执行HTTP的GET/POST请求
- 【Fetch API 实用指南】如何使用 Fetch API 执行 HTTP 请求
- 详解nginx的请求限制(连接限制和请求限制)
- angular请求防抖,以及处理第一次请求失效
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
An Introduction to the Analysis of Algorithms
Robert Sedgewick、Philippe Flajolet / Addison-Wesley Professional / 1995-12-10 / CAD 67.99
This book is a thorough overview of the primary techniques and models used in the mathematical analysis of algorithms. The first half of the book draws upon classical mathematical material from discre......一起来看看 《An Introduction to the Analysis of Algorithms》 这本书的介绍吧!