首先,要使用curl發(fā)送post請(qǐng)求,需要設(shè)置請(qǐng)求參數(shù)。curl的請(qǐng)求參數(shù)需要以curl_setopt()函數(shù)來(lái)設(shè)置。下面我們來(lái)看一個(gè)最簡(jiǎn)單的發(fā)送post請(qǐng)求的例子:
$url = 'http://www.example.com/test.php';
$data = array('username' =>'user1', 'password' =>'123456');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$response = curl_exec($ch);
curl_close($ch);
在以上的示例代碼中,$url是目標(biāo)url地址,$data是發(fā)送的post數(shù)據(jù)。curl_setopt()函數(shù)中使用了CURLOPT_URL、CURLOPT_POST、CURLOPT_POSTFIELDS三個(gè)常量。 CURLOPT_URL設(shè)置目標(biāo)url地址; CURLOPT_POST設(shè)置post請(qǐng)求方式為POST; CURLOPT_POSTFIELDS設(shè)置POST請(qǐng)求發(fā)送的數(shù)據(jù)。
除了,上述最簡(jiǎn)單的例子,我們還可以設(shè)置其他curl_opts。接下來(lái)我來(lái)為大家介紹一些常用選項(xiàng)。
1. CURLINFO_HEADER_OUT
使用該選項(xiàng)會(huì)將curl的請(qǐng)求頭得到的信息保存在$ch變量中,當(dāng)然,響應(yīng)頭信息還是會(huì)繼續(xù)保存到$response變量中。
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLINFO_HEADER_OUT, true);
$response = curl_exec($ch);
$request_headers = curl_getinfo($ch, CURLINFO_HEADER_OUT);
2. CURLOPT_HTTPHEADER
使用CURLOPT_HTTPHEADER可以為請(qǐng)求頭中的特定信息添加到curl請(qǐng)求中( $key : $value)。 這可以包括任何頭部選項(xiàng),諸如授權(quán)令牌,內(nèi)容類(lèi)型等。
$headers = array('Content-Type: application/json', 'Authorization: Bearer ' . $token);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
3. CURLOPT_COOKIEJAR和CURLOPT_COOKIEFILE
采用這兩個(gè)選項(xiàng),可以在本地保存來(lái)自服務(wù)器的cookie。CURLOPT_COOKIEJAR設(shè)置本地文件路徑用于保存cookie,CURLOPT_COOKIEFILE設(shè)置從文件讀取cookie。
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
以上是幾個(gè)相對(duì)比較基礎(chǔ)的選項(xiàng),當(dāng)然還有很多其他選項(xiàng)可以使用。因?yàn)閏url支持的選項(xiàng)異常的豐富,我們可以根據(jù)不同的場(chǎng)景自行設(shè)置,從而更適合地使用curl。 總的來(lái)說(shuō),使用PHP curl發(fā)送post請(qǐng)求還是相對(duì)容易的,而且靈活度很高。只要設(shè)置好請(qǐng)求參數(shù),就可以完成對(duì)目標(biāo)服務(wù)器發(fā)出的post請(qǐng)求。當(dāng)然,使用curl發(fā)送post請(qǐng)求的一個(gè)難點(diǎn)在于掌握參數(shù)設(shè)置的技巧,希望大家可以多多研究它,并且記住我們上述講到的重要的選項(xiàng)。