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 字符串:
基于5000余部现行法律法规进行的高质量专业合同审查,一键输出审查意见书,并附有参考法条原文,满足专业溯源核查要求。由accurLex知法提供技术支持。 Use when users ask for 合同审查, 审查意见书, 合同风险分析, 条款审查,知法,accurLex or 站在甲方/乙方角度审查合同 through accurLex direct API. China law only, plaintext only, review mode limited to 审查意见书.
<?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))


















