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 相关文章推荐
Adodb的十个实例(清晰版)
Dec 31 PHP
PHP 文件上传功能实现代码
Jun 24 PHP
PHP5中虚函数的实现方法分享
Apr 20 PHP
php在多维数组中根据键名快速查询其父键以及父键值的代码
May 07 PHP
PHP中strtotime函数使用方法分享
Jan 10 PHP
PHP设计模式之观察者模式(Observer)详细介绍和代码实例
Apr 08 PHP
几个实用的PHP内置函数使用指南
Nov 27 PHP
php防止网站被刷新的方法汇总
Dec 01 PHP
windows中为php安装mongodb与memcache
Jan 06 PHP
Laravel框架中实现使用阿里云ACE缓存服务
Feb 10 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
Jan 07 PHP
PHP中include()与require()的区别说明
Feb 14 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微信公众号开发之快递查询
2018/10/20 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
jQuery检测输入的字符串包含的中英文的数量
2015/04/17 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
javaScript给元素添加多个class的简单实现
2016/07/20 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
微信小程序 Flex布局详解
2016/10/09 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
vue过滤器用法实例分析
2019/03/15 Javascript
Python中使用md5sum检查目录中相同文件代码分享
2015/02/02 Python
python实现连接mongodb的方法
2015/05/08 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
如何用Python实现简单的Markdown转换器
2018/07/16 Python
Python Des加密解密如何实现软件注册码机器码
2020/01/08 Python
Python requests模块基础使用方法实例及高级应用(自动登陆,抓取网页源码)实例详解
2020/02/14 Python
Python之字典添加元素的几种方法
2020/09/30 Python
澳大利亚家具和家居用品在线商店:Interiors Online
2018/03/05 全球购物
ellesse美国官方商店:意大利高级运动服品牌
2019/10/29 全球购物
《口技》教学反思
2014/02/21 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
幼儿园新年寄语
2014/04/03 职场文书
销售竞赛活动方案
2014/08/23 职场文书
夫妻忠诚协议书范本
2014/11/17 职场文书
先进集体申报材料
2014/12/25 职场文书
自我推荐信格式模板
2015/03/24 职场文书
电影建党伟业观后感
2015/06/01 职场文书
使用python+pygame开发消消乐游戏附完整源码
2021/06/10 Python
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python
使用HBuilder制作一个简单的HTML5网页
2022/07/07 HTML / CSS