PHP cURL 是一种扩展库,能够连接通讯各种服务器、使用各种协议;
一、基本使用步骤:
1. 初始化 cURL 会话: curl_init
2. 设置 cURL 传输选项: curl_setopt
3. 执行 cURL 会话:curl_exec
4. 返回当前会话最后一次错误的字符串:curl_error
5. 关闭 cURL 会话,也就是关闭资源句柄:curl_close
二、GET请求方法:
//初始化 $ch = curl_init(); //设置选项 // 设置请求地址 curl_setopt($ch, CURLOPT_URL, "http://xxxx.xxxx.xxx"); //获取的信息以字符串返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置请求头信息 curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json;charset=utf-8')); //执行并获取返回内容 $output = curl_exec($ch); // 错误信息获取 $error = curl_error($ch); //释放curl资源句柄 curl_close($ch); //打印获得的数据 print_r('<pre/>'); print_r($error); print_r($output);
三、POST请求方法:
//初始化 $ch = curl_init(); //设置选项 $post_data = json_encode(array('user'=>'test','pwd'=>'test')); // 设置请求地址 curl_setopt($ch, CURLOPT_URL, "http://xxxx.xxxx.xxx"); //设置post请求方式 curl_setopt($ch, CURLOPT_POST, 1); //设置post请求参数 curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); //获取的信息以字符串返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置请求头信息 curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json;charset=utf-8')); //执行并获取返回内容 $output = curl_exec($ch); //错误信息获取 $error = curl_error($ch); //释放curl资源句柄 curl_close($ch); //打印获得的数据 print_r('<pre/>'); print_r($error); print_r($output);
四、模拟浏览器请求方法:
$ch = curl_init('http://xxx.xxx.xxx'); // header头信息作为数据流输出 curl_setopt($ch, CURLOPT_HEADER, 1); //不输出 BODY 部分 curl_setopt($ch, CURLOPT_NOBODY, 1); // 伪装浏览器 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.118 Safari/537.36'); // 保存到字符串而不是输出 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $rs = curl_exec($ch); $error =curl_error($ch); //关闭资源 curl_close($ch); //过滤cookie preg_match('%.PHPSESSID=.*?;%sim',$rs,$arr); var_dump($rs,$arr); $cookies=str_replace('PHPSESSID=','',$arr[0]); $cookies=rtrim($cookies,';'); //获取sessionid var_dump($error,$cookies);
五、PUT 请求方法:
//初始化 $ch = curl_init(); //设置选项 $data = json_encode(array('user'=>'test','pwd'=>'test')); // 设置请求地址 curl_setopt($ch, CURLOPT_URL, "http://xxxx.xxxx.xxx"); //设置PUT请求方式 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); //设置请求参数 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //获取的信息以字符串返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置请求头信息 curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json;charset=utf-8')); //执行并获取返回内容 $output = curl_exec($ch); //错误信息获取 $error = curl_error($ch); //释放curl资源句柄 curl_close($ch); //打印获得的数据 print_r('<pre/>'); print_r($error); print_r($output);
六、DELETE 请求方法:
//初始化 $ch = curl_init(); //设置选项 $data = json_encode(array('user'=>'test','pwd'=>'test')); // 设置请求地址 curl_setopt($ch, CURLOPT_URL, "http://xxxx.xxxx.xxx"); //设置DELETE请求方式 curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE'); //设置请求参数 curl_setopt($ch, CURLOPT_POSTFIELDS, $data); //获取的信息以字符串返回 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //设置请求头信息 curl_setopt($ch, CURLOPT_HTTPHEADER,array('Content-Type: application/json;charset=utf-8')); //执行并获取返回内容 $output = curl_exec($ch); //错误信息获取 $error = curl_error($ch); //释放curl资源句柄 curl_close($ch); //打印获得的数据 print_r('<pre/>'); print_r($error); print_r($output);
更多curl_setopt 设置参数及解释请参考:https://www.php.net/manual/zh/function.curl-setopt.php
更多使用请参考PHP手册地址:https://www.php.net/manual/zh/book.curl.php
如有问题和技术交流,欢迎留言!