你可以把之前 json_encode($data);改为http_build_query($data);
至于原因,请去看详解:https://segmentfault.com/a/1190000006220620
如果还不可以的话,你可以这样
function post($url, $post_data = [])
{
if (empty($post_data) || empty($url)) {
return false;
}
$ch = curl_init();
$data_string = json_encode($post_data);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//post数据
curl_setopt($ch, CURLOPT_POST, 1);
//post的变量
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
//加入以下设置
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data_string))
);
$output = curl_exec($ch);
curl_close($ch);
//打印获得的数据
return json_decode($output);
}