入门指南:curl_init POST 请求

开发人员可以使用 PHP 的 curl_init() 函数发出 POST 请求。使用curl_init()函数,可以发送各种数据格式并配置标头以进行安全通信。

用 Apifox,节省研发团队的每一分钟

入门指南:curl_init POST 请求

免费使用 Apifox

相关推荐

最新文章

API

一体化协作平台

API 设计

API 文档

API 调试

自动化测试

API Mock

API Hub

立即体验 Apifox
目录

cURL 是「Client for URLs」的缩写,为开发人员提供了一整套管理数据传输的功能,以两种不同的模式运行:

  • 用于基本交互的用户友好的命令行界面
  • 无缝集成到编程项目中的强大库
🦊
借助适用于整个 API 生命周期的完整工具 Apifox ,可以在单个应用程序中构建、测试、模拟和记录 API,为自己获取最好、最灵活的 API 开发工具!
Apifox - API 文档、调试、Mock、测试一体化协作平台。拥有接口文档管理、接口调试、Mock、自动化测试等功能,接口开发、测试、联调效率,提升 10 倍。最好用的接口文档管理工具,接口自动化测试工具。
Apifox = Postman + Swagger + Mock + JMeter。集接口文档工具、接口Mock工具、接口自动化测试工具、接口调试工具于一体,提升 10 倍研发效率。是最好用的API文档工具,API自动化测试工具,API Mock工具,接口文档管理工具,接口文档生成工具。

curl_init()的定义

根据 PHP 官方网站,curl_init 函数初始化一个 cURL 会话,并返回一个 cURL 句柄,以便与 curl_setopt()、curl_exec() 和 curl_close() 函数一起使用。

涉及参数

URL

如果提供 URL, CURLOPT_URL 选项将设置为其值,还可以使用 curl_setopt()函数手动设置此选项。

但如果设置了 open_basedir ,则 cURL 本身会禁用 file 协议。

返回值

如果成功,curl_init() 函数会返回一个 cURL 句柄,如果出现错误,则返回 false

什么是 POST 请求?

在 Web 通信环境中,HTTP 充当数据交换的基础,使用的一种重要方法是 POST 请求,专门用于将数据传输到 Web 服务器。本文档深入研究了 POST 请求的复杂性,阐明了其功能并将其与对应的 GET 请求进行了对比。

POST 请求的主要特点

数据传输

POST 请求专门用于将数据发送到 Web 服务器,可用于创建新资源、更新现有信息或删除数据。

数据放置

POST 请求在请求 body 中发送数据,而不是将其包含在 URL 本身中,增强了安全性,特别是对于密码或信用卡详细信息等敏感信息,这些信息不会在 URL 中公开。

改变状态

POST 请求通常会导致服务器端发生修改,可能涉及创建新用户帐户、上传文件、将新产品添加到购物车或删除评论。

不可缓存

由于 POST 请求会修改数据,因此 Web 浏览器通常不会缓存它们。这可确保始终将最新信息发送到服务器,从而防止使用过时的数据。

curl_init() POST 请求的代码示例

如果要使用 curl_init() 函数发出 POST 请求,可以参考以下一些 PHP 编码示例:

示例 1:发送简单文本数据

将基本用户名和密码发送到登录脚本:

<?php

$url = "https://www.example.com/login.php";
$username = "your_username";
$password = "your_password";

$data = array(
  "username" => $username,
  "password" => $password
);

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, 1);  // Set request method to POST
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));  // Set POST data
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // Return the response

$response = curl_exec($ch);

curl_close($ch);

if($response) {
  echo "Login successful!";
} else {
  echo "Error: " . curl_error($ch);
}

?>

代码解读:

  1. 定义目标 URL、用户名和密码。
  2. 创建一个包含用户名和密码的数组 $data
  3. curl_init($url) 初始化句柄。
  4. 使用 curl_setopt($ch, CURLOPT_POST, 1) 将请求方法设置为 POST。
  5. 使用 curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)) 设置 POST 数据。 http_build_query 将数据数组转换为 URL 编码的字符串。
  6. CURLOPT_RETURNTRANSFER 设置为 1 以捕获响应。
  7. 使用 curl_exec($ch) 执行请求并将响应存储在 $response 中。
  8. curl_close($ch) 关闭 curl 句柄。
  9. 检查响应是否存在并显示成功消息或错误。

示例2:发送 JSON 数据

将包含用户信息的 JSON 对象发送到注册脚本:

<?php

$url = "https://www.example.com/register.php";

$user_data = array(
  "name" => "John Doe",
  "email" => "john.doe@example.com",
  "password" => "your_password"
);

$data_json = json_encode($user_data);

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, 1);  // Set request method to POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json);  // Set POST data as JSON
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // Return the response

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'Content-Type: application/json',   // Set content type to JSON
));

$response = curl_exec($ch);

curl_close($ch);

if($response) {
  echo "Registration successful!";
} else {
  echo "Error: " . curl_error($ch);
}

?>

代码解读:

  1. 定义目标 URL 和用户数据数组。
  2. 使用 json_encode 将用户数据转换为 JSON 字符串。
  3. 初始化curl句柄并将请求方法设置为POST。
  4. 使用 curl_setopt($ch, CURLOPT_POSTFIELDS, $data_json) 设置 POST 数据。
  5. CURLOPT_RETURNTRANSFER 设置为 1 以捕获响应。
  6. 设置一个自定义 header Content-Type: application/json 来通知服务器数据是 JSON 格式。
  7. 执行请求并关闭 curl 句柄,如前面的示例所示。
  8. 检查响应并显示成功消息或错误。

示例3:设置自定义标头并遵循重定向

发送带有自定义标头的 POST 请求并遵循重定向:

<?php

$url = "https://www.example.com/login.php";

$data = array(
  "username" => "your_username",
  "password" => "your_password"
);

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, 1);  // Set request method to POST
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  // Return the response

curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  'Authorization: Bearer YOUR_API_KEY',  // Set custom header
));

// Follow redirects up to 3 times
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_MAXREDIRS, 3);

$response = curl_exec($ch);

curl_close($ch);

if($response) {
  echo "Login successful!";
} else {
  echo "Error: " . curl_error($ch);
}

?>

代码解读:

  1. 定义登录 URL 和用户数据。
  2. 设置 curl 句柄和 POST 请求。
  3. 使用 CURLOPT_HTTPHEADER 创建带有授权令牌的自定义header。
  4. 使用 CURLOPT_FOLLOWLOCATION 启用以下重定向,并使用 CURLOPT_MAXREDIRS 将其限制为 3。

注意事项

上面的代码示例不能直接复制粘贴到 IDE 中,因为这是经过简化的版本,需要进一步修改才能满足实际的应用程序使用需求。

自的 IDE 中进行所需的修改! 对于官方文档,可以查看:

PHP: cURL - Manual

用 Apifox 轻松使用 cURL 文件

Apifox 是一体化 API 开发平台,为用户提供整个 API 生命周期所需的所有工具,可以在单个应用程序中构建、调试、模拟和记录 API,将 cURL 命令行转换为美观直观的图形显示,使开发人员更容易理解和使用 API。

用 Apifox 轻松使用 cURL 文件

让我们看看如何将 cURL 命令导入 Apifox!

快速将 cURL 命令导入 Apifox

要将 cURL 命令导入 Apifox,首先在项目中,单击 Apifox 窗口左上角的紫色 + 按钮,然后选择 导入 cURL

curl_init() 的定义

将 cURL 命令复制并粘贴到上显示的框中。

快速将 cURL 命令导入 Apifox

导入成功的话,就能够以 API 请求的形式查看 cURL 命令。

以 API 请求的形式查看 cURL 命令

使用 Apifox 生成 PHP 代码

如果之前没有使用 PHP 编程语言进行编码的经验,也不要担心,Apifox 具有值得信赖的代码生成功能,提供多种其他编程语言的代码框架。

找到 API 请求上的 </> 生成代码 按钮,然后在下拉列表中选择 生成接口请求代码

使用 Apifox 生成 PHP 代码

接着在弹出的窗口中选择「PHP」,默认显示 cURL 部分,应该看到为 cURL 生成的代码。我们只需要将其复制并粘贴到 IDE(集成开发环境)就可以继续开发应用程序。

 cURL复制并粘贴到 IDE

总结

使用 curl_init() 掌握 POST 请求为开发人员解锁了一个强大的工具,能够将数据发送到网络服务器,从而实现创建用户帐户、上传文件和提交表单等操作。通过了解 POST 请求的核心概念和 curl_init() 的功能,可以为各种 Web 交互制定定制的解决方案。

curl_init() 提供了一种灵活的方法,允许以不同格式发送数据、设置自定义标头以及处理文件上传和重定向等场景。curl_init() 函数还可以发送 PUT 请求GET 请求DELETE 请求。有了这些新发现的知识,就可以自信地利用 POST 请求来增强 Web 应用程序的功能。