php CURL 发送请求封装
cURL可以使用URL的语法模拟浏览器来传输数据,因为它是模拟浏览器,因此它同样支持多种协议,FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP等协议都可以很好的支持,包括一些:HTTPS认证,HTTP POST方法,HTTP PUT方法,FTP上传,keyberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上传文件断点续传,http代理服务器管道,甚至它还支持IPv6,scoket5代理服务器,通过http代理服务器上传文件到FTP服务器等等。
使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL 是一个功能强大的PHP库。
1、PHP建立CURL请求的基本步骤
①:初始化
1 curl_init()
②:设置属性
1 curl_setopt().有一长串cURL参数可供设置,它们能指定URL请求的各个细节。
③:执行并获取结果
1 curl_exec()
④:释放句柄
1 curl_close()
2、封装:
1 public function http_query($url, $get = null, $post = null) 2 { 3 if (isset($get)) { 4 if (substr_count($url, '?') > 0) { 5 $url .= "&" . http_build_query($get); 6 } else { 7 $url .= "?" . http_build_query($get); 8 } 9 } 10 // 初始化一个cURL会话 11 $ch = curl_init($url); 12 if (isset($post)) { 13 curl_setopt($ch, CURLOPT_POST, TRUE); #开启post 14 curl_setopt($ch, CURLOPT_POSTFIELDS, $post); #post数据 15 } 16 curl_setopt($ch, CURLOPT_HEADER, 0); #是否需要头部信息(否) 17 curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); #如果成功只将结果返回,不自动输出任何内容。 18 curl_setopt($ch, CURLOPT_TIMEOUT, 5); #设置允许执行的最长秒数。 19 curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5); #在发起连接前等待的时间,如果设置为0,则无限等待。 20 //忽略证书 21 if (substr($url, 0, 5) == 'https') { 22 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 23 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 24 } 25 $curl_result = curl_exec($ch); 26 if ($curl_result) { 27 $data = $curl_result; 28 } else { 29 $data = curl_error($ch); 30 } 31 curl_close($ch); #关闭cURL会话 32 return $data; 33 }