php中curl使用指南


Posted in PHP onFebruary 05, 2015

许多同学在第一次使用curl的时候感觉一个头两个大(包括我在内),看着这一条条的curl_setopt函数完全摸不着头脑,不过在你花10分钟看了我的介绍后相信你以后也能轻松戏耍php的curl了

首先,请看一个curl代码(花10秒钟,略看一遍,然后跳到后文)

<?php 

$data = "<soap:Envelope>[...]</soap:Envelope>"; 

$tuCurl = curl_init(); 

curl_setopt($tuCurl, CURLOPT_URL, "https://example.com/path/for/soap/url/"); 

curl_setopt($tuCurl, CURLOPT_PORT , 443); 

curl_setopt($tuCurl, CURLOPT_VERBOSE, 0); 

curl_setopt($tuCurl, CURLOPT_HEADER, 0); 

curl_setopt($tuCurl, CURLOPT_SSLVERSION, 3); 

curl_setopt($tuCurl, CURLOPT_SSLCERT, getcwd() . "/client.pem"); 

curl_setopt($tuCurl, CURLOPT_SSLKEY, getcwd() . "/keyout.pem"); 

curl_setopt($tuCurl, CURLOPT_CAINFO, getcwd() . "/ca.pem"); 

curl_setopt($tuCurl, CURLOPT_POST, 1); 

curl_setopt($tuCurl, CURLOPT_SSL_VERIFYPEER, 1); 

curl_setopt($tuCurl, CURLOPT_RETURNTRANSFER, 1); 

curl_setopt($tuCurl, CURLOPT_POSTFIELDS, $data); 

curl_setopt($tuCurl, CURLOPT_HTTPHEADER, array("Content-Type: text/xml","SOAPAction: \"/soap/action/query\"", "Content-length: ".strlen($data))); 

$tuData = curl_exec($tuCurl); 

if(!curl_errno($tuCurl)){ 

  $info = curl_getinfo($tuCurl); 

  echo 'Took ' . $info['total_time'] . ' seconds to send a request to ' . $info['url']; 

} else { 

  echo 'Curl error: ' . curl_error($tuCurl); 

} 

curl_close($tuCurl); 

echo $tuData; 

?>

WTF,这到底是在做什么?

想要学会这种“高端”的用法吗?

首先,相信你肯定知道网址大部分是由http开头的,那是因为他们需用通过http(超文本传送协议 HTTP-Hypertext transfer protocol)来进行数据传输,但是传输数据不是简单的将一句"Hello"传到服务器上就搞定的事情,发送者为了方便接受者理解发送者的实际意图以及知道发送人到底是何许人也,发送者往往要将许多额外信息一并发给接受者,就像寄信人需要在信件外套一个信封一样,信封上写着各种发信人的信息。所有的这些最终合并成了一个叫做报文(message)的玩意,也就构成了整个互联网的基础。

php中curl使用指南

curl的工作就是通过http协议发送这些message (php的libcurl目前还支持https、ftp、telnet等其他协议)

现在再看代码,实际上代码只做了五件事情

curl_init()初始化curl
curl_setopt()设置传输数据和参数
curl_exec()执行传输并获取返回数据
curl_errono()返回错误码
curl_close()关闭curl
下面给出使用GET和POST方法如何抓取和提交任意页面的数据

<?php

    //初始化

    $curl = curl_init();

    //设置url

    curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');

    //设置返回获取的输出为文本流

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    //执行命令

    $data = curl_exec($curl);

    //关闭URL请求

    curl_close($curl);

    //显示获得的数据

    print_r($data);

?>

<?php

    //初始化

    $curl = curl_init();

    //设置url

    curl_setopt($curl, CURLOPT_URL, 'http://www.baidu.com');

    //设置返回获取的输出为文本流

    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

    //设置post方式提交

    curl_setopt($curl, CURLOPT_POST, 1);

    //设置post数据

    curl_setopt($curl, CURLOPT_POSTFIELDS, array("data"=>"value");

    //执行命令

    $data = curl_exec($curl);

    //关闭URL请求

    curl_close($curl);

    //打印数据

    print_r($data);

?>

感兴趣的同学还可以参考php官方文档,学习更多curl用法

PHP 相关文章推荐
PHP.MVC的模板标签系统(四)
Sep 05 PHP
PHP数组无限分级数据的层级化处理代码
Dec 29 PHP
如何使用Strace调试工具
Jun 03 PHP
如何用PHP来实现一个动态Web服务器
Jul 29 PHP
CodeIgniter配置之config.php用法实例分析
Jan 19 PHP
CI框架中类的自动加载问题分析
Nov 21 PHP
PHP中Trait及其应用详解
Feb 14 PHP
PHP中file_put_contents追加和换行的实现方法
Apr 01 PHP
php实现的二叉树遍历算法示例
Jun 15 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
Aug 11 PHP
实例说明js脚本语言和php脚本语言的区别
Apr 04 PHP
Mac下关于PHP环境和扩展的安装详解
Oct 17 PHP
PHP开发注意事项总结
Feb 04 #PHP
浅谈php命令行用法
Feb 04 #PHP
PHP strtotime函数用法、实现原理和源码分析
Feb 04 #PHP
php curl登陆qq后获取用户信息时证书错误
Feb 03 #PHP
ecshop实现smtp发送邮件
Feb 03 #PHP
PHP中使用php://input处理相同name值的表单数据
Feb 03 #PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 #PHP
You might like
sony ICF-2010 拆解与改装
2021/03/02 无线电
php笔记之:php函数range() round()和list()的使用说明
2013/04/26 PHP
PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception
2014/06/12 PHP
详解WordPress中简码格式标签编写的基本方法
2015/12/22 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
Laravel框架文件上传功能实现方法示例
2019/04/16 PHP
javascript数组使用调用方法汇总
2007/12/08 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
2011/02/25 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
js实现炫酷的左右轮播图
2017/01/18 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
2018/08/17 Javascript
javascript实现京东登录显示隐藏密码
2020/08/02 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
js实现鼠标拖曳效果
2020/12/30 Javascript
[03:17]史诗级大片应援2018DOTA2国际邀请赛 致敬每一位坚守遗迹的勇士
2018/07/20 DOTA
python基于右递归解决八皇后问题的方法
2015/05/25 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
Django实现文件上传和下载功能
2019/10/06 Python
python Plotly绘图工具的简单使用
2020/03/03 Python
Python实现汇率转换操作
2020/05/03 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
Tensorflow使用Anaconda、pycharm安装记录
2020/07/29 Python
Python如何截图保存的三种方法(小结)
2020/09/01 Python
几个CSS3的flex弹性盒模型布局的简单例子演示
2016/05/12 HTML / CSS
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
个人简历中的自我评价范例
2013/10/29 职场文书
八项规定整改措施
2014/02/12 职场文书
工程力学专业自荐信范文
2014/03/17 职场文书
党政领导班子群众路线对照检查材料
2014/10/26 职场文书
优秀教育工作者事迹材料
2014/12/24 职场文书
python 实现两个变量值进行交换的n种操作
2021/06/02 Python