📜  php http 构建查询 - PHP (1)

📅  最后修改于: 2023-12-03 14:45:11.689000             🧑  作者: Mango

PHP HTTP构建查询

当你需要在PHP中执行HTTP查询的时候,你可以使用PHP curl的库或GuzzleHttp库。 本文主要介绍如何使用GuzzleHttp库来构建HTTP查询。

安装GuzzleHttp

你可以使用composer来安装GuzzleHttp库,只需要在你的项目中运行以下命令:

composer require guzzlehttp/guzzle
发送HTTP请求

使用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_uritimeout选项。然后调用request方法发送请求。 最后,我们打印响应主体。

发送HTTP POST请求

发送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_uritimeout选项。 然后调用request方法发送请求。 我们还将json选项传递给请求,它将请求数据作为JSON字符串发送。

发送HTTP查询参数

如果你想要给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请求头

如果你需要添加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响应

当你发送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_uritimeout选项。然后调用request方法发送请求。 最后,我们打印响应主体。

发送HTTP POST请求

发送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_uritimeout选项。 然后调用request方法发送请求。 我们还将json选项传递给请求,它将请求数据作为JSON字符串发送。

发送HTTP查询参数

如果你想要给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请求头

如果你需要添加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响应

当你发送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库都提供了很好的支持。