curl发送post请求需在php标签内调用curl_init()等函数并配置选项:1. 表单数据用curlopt_postfields传数组;2. json数据需设content-type: application/json并json_encode();3. 上传文件推荐curlfile对象;4. 注意curlopt_returntransfer=true及https证书验证。

1. 基础 POST 请求(表单数据)
使用 `CURLOPT_POSTFIELDS` 传数组,cURL 会自动设为 application/x-www-form-urlencoded:
<?php $ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com/api/login');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
'username' => 'admin',
'password' => '123456'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
2. 发送 JSON 数据(常见 API 场景)
需手动设置请求头,并把数组转成 JSON 字符串:
<?php $data = ['name' => '张三', 'email' => 'zhang@example.com'];
$json_data = json_encode($data);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://example.com/api/user');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Content-Length: ' . strlen($json_data)
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
3. 上传文件(带 multipart/form-data)
PHP 5.5+ 推荐用 `CURLFile` 对象;旧版本可用 `@` 语法(已弃用):
- 推荐方式(PHP ≥ 5.5):
curl_setopt($ch, CURLOPT_POSTFIELDS, ['file' => new CURLFile('/path/to/file.jpg')]); - 注意:不要手动加
Content-Type: multipart/form-data,cURL 会自动生成边界(boundary)
4. 常见坑点提醒
- CURLOPT_RETURNTRANSFER 必须设为 true,否则 `curl_exec()` 只打印响应、不返回字符串
- 没加
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false)时,HTTPS 请求可能失败(仅开发调试用,生产环境应配好 CA) - 中文或特殊字符记得用
urlencode()或确保 JSON 编码为 UTF-8(json_encode($data, JSON_UNESCAPED_UNICODE))
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











