PHP之CURL通过header传参数及接收
一、传参数之冒号
注意一点,这里的header数据不是KV结构,而是一个一维数组。
看清楚,注意一点,是这样的结构:
$ch = curl_init();
$headers = ['X-Custom-Header: value123','Authorization: Bearer your_token_here' // 示例
];
curl_setopt_array($ch, [CURLOPT_URL => 'https://api.example.com/endpoint',CURLOPT_RETURNTRANSFER => true,CURLOPT_HTTPHEADER => $headers,CURLOPT_HEADER => true // 开启以调试响应头
]);
$response = curl_exec($ch);
curl_close($ch);
注意第三行中间是冒号分开的,冒号,冒号!!
不是
X-Custom-Header => value123
切记!!!!
二: CURL只能传一维数组
不要传二维码的,传过去接收不了。
如果你要传二维码的请先转义再传!
// 原始二维数组
$data = ["users" => [["name" => "John", "age" => 30],["name" => "Jane", "age" => 25]],"action" => "update"
];// 转换为 URL 编码格式
$postData = http_build_query($data);$ch = curl_init();
curl_setopt_array($ch, [CURLOPT_URL => "https://api.example.com/endpoint",CURLOPT_POST => true,CURLOPT_POSTFIELDS => $postData,CURLOPT_HTTPHEADER => ["Content-Type: application/x-www-form-urlencoded"],CURLOPT_RETURNTRANSFER => true
]);
$response = curl_exec($ch);
curl_close($ch);
这里要使用http_build_query($data)
转义后再传。
三、接收Header
使用 $_SERVER 即可,不过接收到的全是大写的,会加上HTTP
或使用 getallheaders() 函数,取得的是不带HTTP的小写变量名。
PHP: getallheaders - Manual