PHP利用CURL实现网络请求

100人浏览   2024-08-21 10:18:15

CURL功能

libcurl可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,libcurl目 前支持http、https、 ftp、 gopher、 telnet、 dict. fle和ldap协议。libcurl同时也支持HTTPS认证、 HTTP POST、HTTP PUT、 FTP上传(这个也能通过PHP的FTP扩展完成)、HTTP基于表单的上传、代理、cookies和用户名+密码的认证。下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至它还支持IPv6,scoket5代理服务器, 通过http代理服务器上传文件到FTP服务器等等。

注意:

操作系统要安装libcurl,系统提供接口供PHP调用,PHP内部实现相应的方法或者函数来供程序猿使用

添加讲解内容:外挂方式添加PHP模块(若此课程在Linux后)

使用的步骤:

1)初始化,创建一个cURL资源

2)设置URL和相应的选项3.抓取URL返回值并处理

3)抓取URL返回值并处理

4)关闭CURL并释放系统资源

下面我们来写一个GET请求

//初始化

$ch= curl_init();

//设置选项和URL

curl_setopt($ch, CURLOPT_URL, "http://localhost/18/ze/c.php?id=1");

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);

//返回获取内容

$output= curl_exec($ch);

//释放curl句柄

curl_close($ch);

//打印数据

print_r($output);

以上方式获取的数据是Json格式,需要使用json_decode函数转译成数据组。

$output_array= json_decode($output,true);

如果使用json_decode($output)解析的话,将会得到object类型的数据。在第二步中可以设置一些高级选项,,可以完成 相应的功能 。

例如我们用CURL写一个POST请求

$url= "http://localhost/18/ze/post.php";

$post_data= array("username"=> "bob","key"=> "12345");

$ch= curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

//post 数据

curl_setopt($ch, CURLOPT_POST, 1);

//post 变量

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$output= curl_exec($ch);

curl_close($ch);

//打印获得的数据

print_r($output);

至于效率方面,curl的原理是模拟浏览器的操作,它的效率要比file_get_contents()高出至少3倍以上。同时稳定性也比file_get_contents()要好的多。

相关推荐