可以使用 curl_init 和其他函数的组合使用 cURL 库来执行 GET 请求。
当从 PHP 使用 cURL 时,我们需要使用函数组合来指定请求的不同特征。
可以在发送请求之前和使用 curl_init 加载 cURL 之后使用 curl_setopt 定义请求的选项。
要使用 cURL 执行 HTTP GET 请求,并下载响应正文,我们可以这样做:
//URL to fetch $url = "https://onitroad.com/"; //Initialize cURL session $ch = curl_init(); //Provide the URL for the request we are about to perform curl_setopt($ch, CURLOPT_URL, $url); //Option to Return the Result, rather than just true/false curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); //Perform the request, and save content to $result $result = curl_exec($ch); //Close the cURL resource, and free up system resources! curl_close($ch); //Shows the result! echo $result;
设置请求选项
通常,当有人想要执行 GET 请求时,他们不仅想发送 HTTP 请求,还想返回响应正文。
也可以返回响应头,但大多数情况下我们只想返回正文。
如果我们只需要返回标头,我们应该查看本教程:Performing a HEAD Request with cURL
cURL 通过 curl_setopt 函数提供了各种选项,我们需要使用它来告诉 cURL 我们要下载响应正文。
通常, curl_exec 函数只会在成功时返回 true 或者在失败时返回 false,为了改变这种行为,而是让它返回下载的内容,我们可以设置 CURLOPT_RETURNTRANSFER 函数:
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
这样做会使函数在成功时返回结果,在失败时返回 false。
如果需要,我们也可以返回 HTTP 响应头,为此,我们需要设置 CURLOPT_HEADER 选项:
curl_setopt($ch, CURLOPT_HEADER, true);
执行 GET 请求
在设置选项之前加载cURL很重要,所以记得先使用curl_init,最后使用curl_exec来执行请求。
我们可以使用相同的 cURL 会话执行更多请求(在循环中)。
当 HOST 相同时,这可能会带来一些性能提升,而我们只是更改了相对 URL。
如果在循环中运行,我们可以通过再次设置 CURLOPT_URL 选项来更改后续请求的 URL:
curl_setopt($ch, CURLOPT_URL, $new_url);
之后我们可以再次调用 curl_exec 以使用相同的会话执行另一个请求。
最后,完成后调用 curl_close 将释放系统资源并关闭会话。