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默认安装产生系统漏洞
Oct 09 PHP
php 遍历数据表数据并列表横向排列的代码
Sep 05 PHP
PHP 截取字符串函数整理(支持gb2312和utf-8)
Feb 16 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
处理(php-cgi.exe - FastCGI 进程超过了配置的请求超时时限)的问题
Jul 03 PHP
php中用socket模拟http中post或者get提交数据的示例代码
Aug 08 PHP
php操作csv文件代码实例汇总
Sep 22 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
学习PHP Cookie处理函数
Aug 09 PHP
Laravle eloquent 多对多模型关联实例详解
Nov 22 PHP
PHP XML Expat解析器知识点总结
Feb 15 PHP
laravel框架 laravel-admin上传图片到oss的方法
Oct 13 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
字母顺序颠倒而单词顺序不变的php代码
2010/08/08 PHP
在PHP中PDO解决中文乱码问题的一些补充
2010/09/06 PHP
Yii中使用PHPExcel导出Excel的方法
2014/12/26 PHP
php从数据库读取数据,并以json格式返回数据的方法
2018/08/21 PHP
PHP+jQuery实现即点即改功能示例
2019/02/21 PHP
TNC vs BOOM BO3 第二场2.13
2021/03/10 DOTA
火狐浏览器(firefox)下获得Event对象以及keyCode
2008/11/13 Javascript
基于jQuery的遍历同id元素 并响应事件的代码
2012/06/14 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
Angular4学习教程之HTML属性绑定的方法
2018/01/04 Javascript
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
一文快速详解前端框架 Vue 最强大的功能
2019/05/21 Javascript
vue动态配置模板 'component is'代码
2019/07/04 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
Websocket 向指定用户发消息的方法
2020/01/09 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
python操作MongoDB基础知识
2013/11/01 Python
python类和函数中使用静态变量的方法
2015/05/09 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
Python configparser模块应用过程解析
2020/08/14 Python
HTML5的表单(绝对特别强大的功能)使用示例
2013/06/20 HTML / CSS
html5如何在Canvas中实现自定义路径动画示例
2017/09/18 HTML / CSS
HTML5拍照和摄像机功能实战详解
2019/01/24 HTML / CSS
雷蛇美国官网:Razer
2020/04/03 全球购物
Java中compareTo和compare的区别
2016/04/12 面试题
党员应该树立反腐倡廉的坚定意识思想汇报
2014/09/12 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
如何用python反转图片,视频
2021/04/24 Python
JavaScript实现栈结构详细过程
2021/12/06 Javascript