您的位置:首页 > 其它

复印curl学习记录

2016-06-26 11:32 573 查看
昨天复习学习了php中curl的使用,现复习回顾之。

curl的一般步骤:

初始化  curl_init()

发送执行解析curl_exec()

释放句柄curl_close()

这个是个小例子。

//初始化curl

$curl = curl_init("www.baidu.com");

//发送和执行

curl_exec($curl);

//释放句柄

curl_close($curl);

curl高级:

这就会用到curl_setopt(),PHP手册中讲述的很详细,我自己记住的也不多,贴下几个例子以备后续查看。

//实战2 下载网络上面的一个HTTPS的资源

$curl = curl_init();

$url = 'https://ajax.aspnetcdn.com/ajax/jquery.validate/1.12.0/jquery.validate.js';

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

//设置HTTPS支持

date_default_timezone_set('PRC');//设置时区,这个必须设置

//取消验证 对认证证书来源的检查从证书中检查SSL加密算法是否存在

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);

$output = curl_exec($curl);

curl_close($curl);

echo $output;

说到这里,还有一个非常重要的东西,那就是curl_error();根据这个错误报告,我们才能知道,程序到底是哪里出错了;

//实战3 调用接口查询天气,

$data = 'theCityCode=北京&theUserID=';

$url = 'http://ws.webxml.com.cn/WebServices/WeatherWS.asmx/getWeather';

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "$url");

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_HEADER, 0);

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

curl_setopt($curl,CURLOPT_HTTPHEADER,array("application/x-www-form-urlencoded;charset=utf-8",

"Content-Length:".strlen($data)));

curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.152 Safari/537.36');

$output = curl_exec($curl);

//设置错误报告

//curl_error — 返回一个保护当前会话最近一次错误的字符串

//curl_errno — 返回最后一次的错误号

if (!curl_errno($curl)) {
echo $output;

} else {
echo 'Curl error:' . curl_error($curl);

}

curl_close($curl);

//实战4 从ftp上面下载东西

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, "FTP://127.0.0.1/topchn001.htm");

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_HEADER, 0);

//设置连接时间,300s没完成,就断开



curl_setopt($curl, CURLOPT_TIMEOUT, 300);

//设置登录名和密码 用:分开

curl_setopt($curl, CURLOPT_USERPWD, "xiao:xiao");

$outfile = fopen("dest.txt","wb");

curl_setopt($curl, CURLOPT_FILE, $outfile);

$output = curl_exec($curl);

fclose($outfile);

if (!curl_errno($curl)) {
echo $output;

} else {
echo 'Curl error ' . curl_error($curl);

}

curl_close($curl);

//实战5 往ftp上面上传文件

//注意 若是报出550 错误  需要检查账户权限

$curl = curl_init();

$localfile = 'dest.txt';

$fp = fopen($localfile,"r");

curl_setopt($curl, CURLOPT_URL, 'FTP://127.0.0.1/cc.txt');

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($curl, CURLOPT_HEADER, 0);

//设置连接断开时间 300s没完成就 不做了

curl_setopt($curl, CURLOPT_TIMEOUT, 300);

//设置登录名和密码 用:分开

curl_setopt($curl, CURLOPT_USERPWD, "xiao:xiao");

//允许文件上传

curl_setopt($curl, CURLOPT_UPLOAD, 1);

//读取文件地址

curl_setopt($curl, CURLOPT_INFILE, $fp);

//检查上传的文件大小

curl_setopt($curl, CURLOPT_INFILESIZE, filesize($localfile));

$output = curl_exec($curl);

fclose($fp);

if (!curl_errno($curl)) {
echo "ok";

} else {
echo 'Curl error ' . curl_error($curl);

}

curl_close($curl);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: