通過(guò)curl對(duì)接口發(fā)起post請(qǐng)求的時(shí)候很少會(huì)遇到請(qǐng)求數(shù)據(jù)是二維數(shù)組的情況莲祸,一般情況下只需要按照正常的方式發(fā)送請(qǐng)求就可以了苛萎,可能的代碼如下:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
if ($result) {
curl_close($ch);
$res_data = json_decode($result, true);
echo '<pre>';
print_r($res_data);
echo '</pre>';
} else {
$error = curl_errno($ch);
echo 'curl出錯(cuò)谐丢,錯(cuò)誤碼('.$error.')';
curl_close($ch);
}
但是當(dāng)請(qǐng)求的數(shù)據(jù)是$data
是二維數(shù)組的時(shí)候,php就會(huì)提示Array to string conversion鲁冯,這個(gè)時(shí)候需要使用函數(shù)http_build_query()
來(lái)處理$data
缨叫,調(diào)整后的代碼為:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$result = curl_exec($ch);
if ($result) {
curl_close($ch);
$res_data = json_decode($result, true);
echo '<pre>';
print_r($res_data);
echo '</pre>';
} else {
$error = curl_errno($ch);
echo 'curl出錯(cuò),錯(cuò)誤碼('.$error.')';
curl_close($ch);
}
這樣提示信息就不會(huì)再出現(xiàn)了缅糟。