PHP中使用cURL实现Get和Post请求的方法
一、curl是什么
PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。
libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、代理、cookies和用户名+密码的认证
二、curl命令行执行
1、Get方法请求 curl protocol://address:port/url?args
例如:curl http://www.baidu.com
2、Post方法请求 curl -d "args" "protocol://address:port/url"
例如:curl -d "user=root&passwd=12345678" "http://baidu.com"
三、curl模拟浏览器执行
function curlRequest($url, $data = null, $headers=null, $connect_timeout = 1000, $read_timeout = 2000) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if ($headers) { curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);//设置请求头 } if ($data !== null) { curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); } if (defined('CURLOPT_CONNECTTIMEOUT_MS')) { $options[CURLOPT_CONNECTTIMEOUT_MS] = $connect_timeout; $options[CURLOPT_TIMEOUT_MS] = $connect_timeout + $read_timeout; } else { $options[CURLOPT_CONNECTTIMEOUT] = ceil($connect_timeout / 1000); $options[CURLOPT_TIMEOUT] = ceil(($connect_timeout + $read_timeout) / 1000); } $content = curl_exec($ch); if (false === $content) { return false; } $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($http_code !== 200) { return false; } return $content;
四、curl下载图片
function downloadImage($thumb) { $img_type = strrchr($thumb, '.'); $fileName = uniqid() . rand(1000, 9999); $dir = ROOT_PATH . 'images/temp/' . date('Ymd') . '/'; $dir1 = '/images/temp/' . date('Ymd') . '/'; if (!is_dir($dir)) { mkdir($dir, 0700, true); } $new_file = $dir . $fileName . $img_type; $resource = fopen($new_file, 'wb'); $ch = curl_init(); //初始化一个curl句柄 curl_setopt($ch, CURLOPT_URL, $thumb); //需要获取的 URL 地址 curl_setopt($ch, CURLOPT_FILE, $resource); //设置成资源流的形式 curl_setopt($ch, CURLOPT_HEADER, 0); //启用时会将头文件的信息作为数据流输出。 //curl_setopt($ch,CURLOPT_RETURNTRANSFER,false);//以数据流的方式返回数据,false时直接显示 curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置超时时间 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_exec($ch); //执行curl curl_close($ch); //关闭curl会话 fclose($resource); //关闭句柄 if (!file_exists($new_file) || filesize($new_file) == 0) return false; return $dir1 . $fileName . $img_type; }
- 上一篇 »linux命令curl做POST请求
- 下一篇 »JAVA处理Http请求,GET,POST