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版国家代码、缩写查询函数代码
Aug 14 PHP
8个必备的PHP功能实例代码
Oct 27 PHP
mac下安装nginx和php
Nov 04 PHP
zend framework文件上传功能实例代码
Dec 25 PHP
php使用curl抓取qq空间的访客信息示例
Feb 28 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
10款实用的PHP开源工具
Oct 23 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
PHP中单例模式与工厂模式详解
Feb 17 PHP
php 7新特性之类型申明详解
Jun 06 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
基于php伪静态的实现方法解析
Jul 31 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
全国FM电台频率大全 - 23 四川省
2020/03/11 无线电
《雄兵连》系列首部大电影《烈阳天道》:可能是因为期望值太高了
2020/08/18 国漫
php预定义常量
2006/12/25 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
微信 getAccessToken方法详解及实例
2016/11/23 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
php对象工厂类完整示例
2018/08/09 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
Window.Open打开窗体和if嵌套代码
2016/04/15 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
移动端点击态处理的三种实现方式
2017/01/12 Javascript
jQuery简单绑定单个事件的方法示例
2017/06/10 jQuery
webpack2.0配置postcss-loader的方法
2017/08/17 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
零基础学Python(一)Python环境安装
2014/08/20 Python
Python中使用ConfigParser解析ini配置文件实例
2014/08/30 Python
Python获取DLL和EXE文件版本号的方法
2015/03/10 Python
Python中字典的基本知识初步介绍
2015/05/21 Python
Python中operator模块的操作符使用示例总结
2016/06/28 Python
pycharm安装图文教程
2017/05/02 Python
Python 装饰器使用详解
2017/07/29 Python
python处理csv中的空值方法
2018/06/22 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
党章学习思想汇报
2014/01/14 职场文书
毕业生大学生活自我总结
2014/01/31 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
护士节演讲稿开场白
2014/08/25 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
保外就医申请书范文
2015/08/06 职场文书
美德少年事迹材料(2016推荐版)
2016/02/25 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书