«

PHP cURL发送POST

时间:2026-10-19 07:23     作者:emer     分类: 无


PHP cURL发送POST

引言

后端对接第三方接口、登录模拟、提交表单,PHP最常用cURL扩展发HTTP请求。file_get_contents只能简单GET,cURL能控制POST、请求头、Cookie、超时和错误处理,是对接API的标配。

基础POST表单

$ch = curl_init('https://api.example.com/login');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
    'username' => 'user01',
    'password' => '123456',
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 结果返回字符串而非直接输出
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$res = curl_exec($ch);
$err = curl_error($ch);
curl_close($ch);

POSTFIELDS传数组即multipart表单,接口收到的是form-data。

发送JSON

对接REST接口要手动编码并声明头:

$json = json_encode(['name' => '测试', 'age' => 18]);
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Authorization: Bearer ' . $token,
]);

注意JSON方式POSTFIELDS传字符串,别传数组。

带Cookie维持登录

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');   // 第一次保存
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');  // 第二次读取

模拟登录再访问需鉴权页面时,用cookie文件维持会话。

错误与状态码处理

if ($err) { echo '请求失败:' . $err; }
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$data = json_decode($res, true);

别只看返回体,必须判断$code和curl_error,500/404也要处理。

注意事项

总结

cURL POST先init,设CURLOPT_POST和POSTFIELDS,表单传数组、JSON传字符串并带头,RETURNTRANSFER取回结果,配合超时、错误判断和状态码,生产保留SSL校验。掌握这套就能稳定对接绝大多数第三方API。

标签: PHP 后端开发 cURL post请求 接口对接