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的知识
Nov 17 PHP
实例介绍PHP的Reflection反射机制
Aug 05 PHP
PHP面向对象程序设计之接口用法
Aug 20 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
PHP Oauth授权和本地加密实现方法
Aug 12 PHP
PHP屏蔽关键字实现方法
Nov 17 PHP
PHP 芝麻信用接入的注意事项
Dec 01 PHP
php 中的closure用法详解
Jun 12 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 PHP
PHP 文件写入和读取操作实例详解【必看篇】
Nov 04 PHP
PHP与Web页面的交互示例详解二
Aug 04 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
一些星际专用术语解释
2020/03/04 星际争霸
咖啡产品发展的三大浪潮
2021/03/04 咖啡文化
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
基于php编程规范(详解)
2017/08/17 PHP
jValidate 基于jQuery的表单验证插件
2009/12/12 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
用Jquery.load载入页面后样式没了页面混乱的解决方法
2014/10/20 Javascript
多种jQuery绑定事件的实现方式
2016/06/13 Javascript
js微信支付实现代码
2016/12/22 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
详解Vue+elementUI build打包部署后字体图标丢失问题
2020/07/13 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
element-ui点击查看大图的方法示例
2020/12/14 Javascript
[03:01]完美世界DOTA2联赛PWL S2 集锦第二期
2020/12/03 DOTA
基于使用paramiko执行远程linux主机命令(详解)
2017/10/16 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
django2.0扩展用户字段示例
2019/02/13 Python
python实现字符串完美拆分split()的方法
2019/07/16 Python
Python_查看sqlite3表结构,查询语句的示例代码
2019/07/17 Python
python PyQt5/Pyside2 按钮右击菜单实例代码
2019/08/17 Python
python颜色随机生成器的实例代码
2020/01/10 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
用html5绘制折线图的实例代码
2016/03/25 HTML / CSS
深入浅析HTML5中的article和section的区别
2018/05/15 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
护理专业大学生自我推荐信
2014/01/25 职场文书
酒店端午节促销方案
2014/02/18 职场文书
求职面试个人自我评价
2014/02/28 职场文书
商铺门面租房协议书
2014/10/21 职场文书
建议书范文
2015/02/05 职场文书
同学聚会通知短信
2015/04/20 职场文书
怎样写观后感
2015/06/19 职场文书
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电