cURL
cURL 简介
cURL 是一个用于发送和接收 HTTP 请求的命令行工具,同时它也被广泛应用于各种编程语言中。PHP 中的 cURL 扩展使得开发者可以方便地通过 PHP 发送各种类型的 HTTP 请求,包括 GET、POST、PUT、DELETE 等。
cURL 的基本使用
初始化 cURL 会话
在使用 cURL 之前,首先需要初始化一个 cURL 会话。这通常通过调用 curl_init()
函数来完成:
$ch = curl_init();
设置选项
在初始化 cURL 会话之后,可以通过 curl_setopt()
函数来设置各种选项,如 URL、请求方法、请求头等。以下是一些常见的选项设置示例:
curl_setopt($ch, CURLOPT_URL, "http://example.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, false);
CURLOPT_URL
:指定请求的目标 URL。CURLOPT_RETURNTRANSFER
:设置为true
表示将响应数据作为字符串返回,而不是直接输出。CURLOPT_HEADER
:设置为false
表示不获取响应头信息。
执行请求
设置完所有选项后,可以通过 curl_exec()
函数来执行请求:
$response = curl_exec($ch);
关闭 cURL 会话
请求完成后,记得关闭 cURL 会话以释放资源:
curl_close($ch);
cURL 发送 POST 请求
发送 POST 请求时,需要额外设置一些选项来指定请求的数据和类型。例如:
$data = array( 'name' => 'John Doe', 'email' => 'john@example.com' ); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
cURL 处理 HTTPS 请求
如果请求的目标是 HTTPS 地址,需要额外配置一些选项来确保安全连接:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 不验证证书 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); // 不验证主机名
cURL 处理响应头
如果需要获取响应头信息,可以将 CURLOPT_HEADER
设置为 true
,并通过 substr()
函数从响应中提取出头信息:
curl_setopt($ch, CURLOPT_HEADER, true); $response = curl_exec($ch); $header_size = curl_getinfo($ch, CURLINFO_HEADER_SIZE); $header = substr($response, 0, $header_size); $body = substr($response, $header_size);
file_get_contents
file_get_contents 简介
file_get_contents()
是 PHP 内置的一个函数,用于从文件或 URL 获取数据。与 cURL 相比,它的使用更为简单,但功能相对有限。
使用 file_get_contents 发送 GET 请求
要通过 file_get_contents()
发送 GET 请求,只需指定 URL 并将其赋值给变量即可:
$url = "http://example.com"; $response = file_get_contents($url);
使用 file_get_contents 发送 POST 请求
对于 POST 请求,可以利用 stream_context_create()
函数创建上下文,并传递给 file_get_contents()
函数:
-- -------------------- ---- ------- ----- - ------ ------ -- ----- ----- ------- -- ------------------ -- -------- - ------ ------ -- ------ -------- -- ------- -------- -- -------------- --------------------------------------- --------- -- ----------------------- - -- -------- - -------------------------------- --------- - --------------------------------------- ------ ----------
file_get_contents 处理超时和错误
为了更好地控制请求行为,可以在创建上下文时设置超时时间和错误处理策略:
-- -------------------- ---- ------- -------- - ------ ------ -- ------ -------- -- ------ --------- -- -- -- ---- - -- -------- - -------------------------------- --------- - --------------------------------------- ------ ----------
总结
本章介绍了如何使用 cURL 和 file_get_contents()
来处理 HTTP 请求。虽然 file_get_contents()
更加简便,但在复杂请求场景下,cURL 提供了更多的灵活性和控制能力。根据实际需求选择合适的工具进行开发是非常重要的。