📜  发送数据到 api php (1)

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

发送数据到 api php

当我们需要调用远程服务器上的 API 接口时,我们需要将数据发送给该 API 接口,以便进行处理。在 PHP 中,我们可以使用多种方式来发送数据到 API 接口,其中最常用的是使用 cURL 库。

CURL 库

cURL 库是一个支持不同协议的客户端 URL 传输库,它允许我们发送 HTTP 请求并从服务器获取响应。我们可以使用 cURL 库向远程服务器发送 POST 或 GET 请求,同时添加任意头信息。

以下是一个简单的 PHP 代码示例,演示如何通过 cURL 库发送 POST 请求:

<?php
$data = array('key1' => 'value1', 'key2' => 'value2');
$url = 'http://example.com/api';
 
// 将数据格式化为 JSON
$data_string = json_encode($data);
 
// 初始化 cURL
$ch = curl_init($url);
 
// 设置 POST 请求选项
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen($data_string))
);
 
// 执行请求并获取服务器响应
$result = curl_exec($ch);
 
// 关闭 cURL
curl_close($ch);
 
// 输出返回结果
echo $result;
?>
Guzzle HTTP 客户端

除了 cURL 库之外,我们还可以使用 Guzzle HTTP 客户端。 Guzzle 是一个 PHP HTTP 客户端,它有许多强大的功能,如并发请求处理、重试、日志记录等等。Guzzle 支持使用 PSR-7 标准编写代码,同时也支持 HTTP/2。

以下是一个使用 Guzzle 发送 POST 请求的示例代码:

<?php
use GuzzleHttp\Client;
 
$client = new Client([
    // Base URI is used with relative requests
    'base_uri' => 'http://example.com/api/',
    // You can set any number of default request options.
    'timeout'  => 2.0,
]);
 
$data = [
    'key1' => 'value1',
    'key2' => 'value2',
];
 
$response = $client->post('path/to/api', [
    'json' => $data,
]);
 
echo $response->getBody();
?>

以上就是使用 cURL 库和 Guzzle HTTP 客户端发送 POST 请求的两种方法了,根据实际需求选择合适的方式即可。