php中curl的使用
来源:互联网 发布:奶茶店销售额大数据 编辑:程序博客网 时间:2024/05/22 14:09
一:php使用curl下载网页的例子:
<?php $curl=curl_init("http://www.baidu.com"); curl_setopt($curl,CURLOPT_HEADER,1); //若第三个参数设置为false,则抓取的内容会直接在网页上输出,否则抓取的内容能被接收-->后续可存为文件,处理字符串等。 curl_setopt($curl,CURLOPT_RETURNTRANSFER,false); $file=fopen('/tmp/pricelog','a+'); $res=curl_setopt($curl,CURLOPT_FILE,$file); $data=curl_exec($curl); curl_close($curl); ?>经测试,在Apache或Nginx开启时,用浏览器下面的脚本发送请求,上面的脚本在收到post请求后,会将请求中的数据写入文件中。
二:下面来看一个使用curl发送post请求的例子:
在使用curl发送post请求之前,先要有一个页面来接收post请求:
本文仅作实例,未采用虚拟主机,也未使用MVC模型,只用一个简单的页面来接受POST请求。
<?phpif (!empty($_POST)){ file_put_contents('/tmp/pricelog','POST的内容为'.json_encode($_POST).PHP_EOL,FILE_APPEND);}else{ file_put_contents('/tmp/pricelog','POST的内容为空'.PHP_EOL,FILE_APPEND);}//接收端的返回值采取echo的形式,直接return无效echo "this is POST return value";?>
接下来看发送的过程:
<?php$curl=curl_init("http://localhost/curlrecvpost.php");curl_setopt($curl,CURLOPT_HEADER,false);//CURLOPT_RETURNTRANSFER被设置为1能获取返回值,//若不设置,默认为0.且服务端的返回值会直接显示在浏览器中,接收端只能收到一个bool值来指示curl_exec是否被顺利执行curl_setopt($curl,CURLOPT_RETURNTRANSFER,0);$arr=array(1,2,3,4);curl_setopt($curl,CURLOPT_POST,true);curl_setopt($curl,CURLOPT_POSTFIELDS,$arr);$res=curl_exec($curl);curl_close($curl);var_dump($res);?>
三:一个使用curl上传文件的例子。发送端文件上传代码:
<?php$curl=curl_init("http://localhost/curlrecvpost.php");$file = array("upload_source"=>"@".dirname(__FILE__).'/upload_source.txt');curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);curl_setopt($curl,CURLOPT_POST,true);curl_setopt($curl,CURLOPT_POSTFIELDS,$file);$res=curl_exec($curl);curl_close($curl);?>
接下来是接收端对上传文件的处理:
<?phpif ($_FILES){ file_put_contents('/tmp/pricelog','有文件被上传'.PHP_EOL,FILE_APPEND); $tmp=$_FILES['upload_source']['tmp_name']; $name=$_FILES['upload_source']['name']; if(move_uploaded_file($_FILES['upload_source']['tmp_name'],dirname(__FILE__).'/upload/'.$name)) { file_put_contents('/tmp/pricelog','上传成功'.PHP_EOL,FILE_APPEND); }}else{ file_put_contents('/tmp/pricelog','没有文件被上传'.PHP_EOL,FILE_APPEND);}?>
四:如何获取curl连接的信息:
$curl=curl_init("http://www.weibo.com/");curl_setopt($curl,CURLOPT_HEADER,false);curl_setopt($curl,CURLOPT_GET,true);$res=curl_exec($curl);if (!curl_error($curl)){ //如果没出错则打印连接的信息 var_dump(curl_getinfo($curl));}else{ //出错打印错误信息 var_dump(curl_error($curl));}
在curl操作成功后,调用curl_getinfo会返回一个数组,包含很多有用的信息。从中可获取网络速度,远程主机ip,重定向地址等许多有用的信息。
在发生错误的情况下调用curl_error函数可得到具体的出错信息。
curl比较常用。本文也在持续更新中。
(5)使用curl发送post请求并下载文件。
开发过程中,后端工程师需要对自己的代码进行单元测试,假设有这样的场景:
后端根据收到的数据动态生成pdf,由浏览器下载保存。在测试的时候,我们可以想到自己写一个页面中发POST请求。(注意:此处不能使用ajax,因为其返回的是字符串)显然用curl会更简单。几行代码就解决了,也不需要写新的请求页面。代码如下:
function postGetFile($url,$data){ $curl=curl_init($url); //必须为true,否则返回的数据无法以文件的形式保存。 curl_setopt($curl,CURLOPT_RETURNTRANSFER,true); curl_setopt($curl,CURLOPT_POST,true); //如果post的数据中含有数组的话,必须使用http_build_query对其编码 curl_setopt($curl,CURLOPT_POSTFIELDS,http_build_query($data)); $ret=curl_exec($curl); file_put_contents("tmp.pdf",$ret); curl_close($curl);}
方便简单,在命令行中新建个php文件就能使用了。 →_→...
0 0
- php中curl的使用
- php中curl的使用
- PHP中curl的使用
- 【php中的curl】php中curl的使用
- 【php中的curl】php中curl的使用
- 【php中的curl】php中curl的使用
- PHP中使用CURL
- PHP中使用CURL
- PHP中使用CURL
- PHP中curl的简单使用
- 简述Php中cURL的使用
- PHP中关于cURL的使用
- PHP的cURL使用
- php curl 的使用
- php curl的使用
- 在php中使用curl
- php中curl、fsocket、file_get_content三个函数的使用比较
- PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
- opencv学习(5)——腐蚀与膨胀
- MyBatis使用动态SQL语句
- 干货:MySQL 索引原理及慢查询优化
- 文章标题
- 进程的状态
- php中curl的使用
- CODE[VS] 1670 无穷的序列 简单数论
- strcpy
- linux下线程的分离状态和结合状态
- 50道编程小题目之【水仙花数】
- 系统内存不足,安装软件失败
- HTML5+规范:Downloader(管理网络文件下载任务)
- 分布式系统(三)——分布式共享内存和顺序一致性
- Java 多线程学习笔记 (一)interrupt