您的位置:

curl_setopt的用法

一、什么是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);