📅  最后修改于: 2023-12-03 14:45:11.689000             🧑  作者: Mango
当你需要在PHP中执行HTTP查询的时候,你可以使用PHP curl的库或GuzzleHttp库。 本文主要介绍如何使用GuzzleHttp库来构建HTTP查询。
你可以使用composer来安装GuzzleHttp库,只需要在你的项目中运行以下命令:
composer require guzzlehttp/guzzle
使用GuzzleHttp库发送HTTP请求非常容易。 首先,你需要实例化一个GuzzleHttp\Client
对象,然后调用request
方法发送请求。 以下是一个发送HTTP GET请求的示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'posts/1');
echo $response->getBody();
这个示例首先实例化一个GuzzleHttp\Client
对象,并设置了base_uri
和timeout
选项。然后调用request
方法发送请求。 最后,我们打印响应主体。
发送HTTP POST请求与发送HTTP GET请求类似。以下是一个发送HTTP POST请求的示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('POST', 'posts', [
'json' => [
'title' => 'foo',
'body' => 'bar',
'userId' => 1,
],
]);
echo $response->getBody();
这个示例首先实例化一个GuzzleHttp\Client
对象,并设置了base_uri
和timeout
选项。 然后调用request
方法发送请求。 我们还将json
选项传递给请求,它将请求数据作为JSON字符串发送。
如果你想要给HTTP请求添加查询参数,你可以将它们作为数组传递到request
方法的第三个参数中。 以下是一个添加查询参数的示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'posts', [
'query' => [
'userId' => 1,
],
]);
echo $response->getBody();
这个示例添加了一个查询参数userId
,值为1。查询参数将被添加到请求的URL中。
如果你需要添加HTTP请求头,可以将它们作为数组传递到request
方法的第三个参数中。以下是一个添加HTTP头的示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'posts', [
'headers' => [
'Authorization' => 'Bearer my-token',
],
]);
echo $response->getBody();
这个示例添加了一个名为Authorization
的HTTP头,其值为Bearer my-token
。
当你发送HTTP请求后,你可以使用GuzzleHttp\Psr7\Response
对象处理响应。以下是一个处理HTTP响应的示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'posts/1');
echo $response->getStatusCode(); // 200
echo $response->getHeader('content-type')[0]; // 'application/json; charset=utf8'
echo $response->getBody();
这个示例首先打印响应状态码,然后打印Content-Type
头中的MIME类型和响应主体。
现在你已经知道如何在PHP中使用GuzzleHttp库发送HTTP请求。无论你需要使用哪种HTTP方法、添加HTTP头、查询参数或处理HTTP响应,GuzzleHttp库都提供了很好的支持。
稿件完整代码片段如下:
# PHP HTTP构建查询
当你需要在PHP中执行HTTP查询的时候,你可以使用PHP curl的库或GuzzleHttp库。 本文主要介绍如何使用GuzzleHttp库来构建HTTP查询。
## 安装GuzzleHttp
你可以使用composer来安装GuzzleHttp库,只需要在你的项目中运行以下命令:
composer require guzzlehttp/guzzle
## 发送HTTP请求
使用GuzzleHttp库发送HTTP请求非常容易。 首先,你需要实例化一个`GuzzleHttp\Client`对象,然后调用`request`方法发送请求。 以下是一个发送HTTP GET请求的示例:
``` php
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'posts/1');
echo $response->getBody();
这个示例首先实例化一个GuzzleHttp\Client
对象,并设置了base_uri
和timeout
选项。然后调用request
方法发送请求。 最后,我们打印响应主体。
发送HTTP POST请求与发送HTTP GET请求类似。以下是一个发送HTTP POST请求的示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('POST', 'posts', [
'json' => [
'title' => 'foo',
'body' => 'bar',
'userId' => 1,
],
]);
echo $response->getBody();
这个示例首先实例化一个GuzzleHttp\Client
对象,并设置了base_uri
和timeout
选项。 然后调用request
方法发送请求。 我们还将json
选项传递给请求,它将请求数据作为JSON字符串发送。
如果你想要给HTTP请求添加查询参数,你可以将它们作为数组传递到request
方法的第三个参数中。 以下是一个添加查询参数的示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'posts', [
'query' => [
'userId' => 1,
],
]);
echo $response->getBody();
这个示例添加了一个查询参数userId
,值为1。查询参数将被添加到请求的URL中。
如果你需要添加HTTP请求头,可以将它们作为数组传递到request
方法的第三个参数中。以下是一个添加HTTP头的示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'posts', [
'headers' => [
'Authorization' => 'Bearer my-token',
],
]);
echo $response->getBody();
这个示例添加了一个名为Authorization
的HTTP头,其值为Bearer my-token
。
当你发送HTTP请求后,你可以使用GuzzleHttp\Psr7\Response
对象处理响应。以下是一个处理HTTP响应的示例:
use GuzzleHttp\Client;
$client = new Client([
'base_uri' => 'https://jsonplaceholder.typicode.com/',
'timeout' => 2.0,
]);
$response = $client->request('GET', 'posts/1');
echo $response->getStatusCode(); // 200
echo $response->getHeader('content-type')[0]; // 'application/json; charset=utf8'
echo $response->getBody();
这个示例首先打印响应状态码,然后打印Content-Type
头中的MIME类型和响应主体。
现在你已经知道如何在PHP中使用GuzzleHttp库发送HTTP请求。无论你需要使用哪种HTTP方法、添加HTTP头、查询参数或处理HTTP响应,GuzzleHttp库都提供了很好的支持。