一、什么是curl_setopt?
curl_setopt(resource $ch, int $option, mixed $value): bool
curl_setopt是php中curl库的核心函数之一,用于设置一个curl transfer选项的值。
二、常用的curl_setopt选项
1. CURLOPT_URL
curl_setopt($ch, CURLOPT_URL, $url);
CURLOPT_URL选项用于设置请求的URL,可以是一个字符串或文件流。如果是文件流,同时还需设置CURLOPT_INFILE或CURLOPT_INFILESIZE选项。
2. CURLOPT_RETURNTRANSFER
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
CURLOPT_RETURNTRANSFER选项用于将curl_exec()获取的结果返回而不是输出到屏幕上。
3. CURLOPT_POST
curl_setopt($ch, CURLOPT_POST, true);
CURLOPT_POST选项用于设置请求方式为POST。
4. CURLOPT_POSTFIELDS
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
CURLOPT_POSTFIELDS选项用于设置POST请求的数据,可以是一个数组或字符串。
三、其他常用选项
1. CURLOPT_HTTPHEADER
curl_setopt($ch, CURLOPT_HTTPHEADER, $headerArray);
CURLOPT_HTTPHEADER选项用于设置HTTP请求头,通常用于传递API密钥等参数。
2. CURLOPT_TIMEOUT
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
CURLOPT_TIMEOUT选项用于设置curl请求的超时时间,单位为秒。
3. CURLOPT_SSL_VERIFYHOST
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
CURLOPT_SSL_VERIFYHOST选项用于设置SSL连接时是否验证证书主机名。
4. CURLOPT_SSL_VERIFYPEER
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
CURLOPT_SSL_VERIFYPEER选项用于设置SSL连接时是否验证证书。
四、完整示例代码
$url = 'https://www.example.com/api'; $data = ['key1' => 'value1', 'key2' => 'value2']; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, ['APIKEY:xxxxxxxx']); curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec($ch); curl_close($ch); print_r($result);