php中curl使用指南

 更新时间:2015年02月05日 11:17:51   投稿:hebedich  
这篇文章主要介绍了php中curl使用指南,十分详细,需要的朋友可以参考下

许多同学在第一次使用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)的玩意,也就构成了整个互联网的基础。

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实现一个二维码同时支持支付宝和微信支付的示例

    这篇文章主要介绍了PHP实现一个二维码同时支持支付宝和微信支付的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Yii分页用法实例详解

    Yii分页用法实例详解

    这篇文章主要介绍了Yii分页用法,以实例形式详细分析了比较常见的几种分页方法及其应用特点,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • Smarty日期时间操作方法示例

    Smarty日期时间操作方法示例

    这篇文章主要介绍了Smarty日期时间操作方法,结合实例形式较为详细的分析了Smarty日期时间操作相关函数、参数功能及使用技巧,需要的朋友可以参考下
    2016-11-11
  • Yii2.0 RESTful API 基础配置教程详解

    Yii2.0 RESTful API 基础配置教程详解

    这篇文章主要介绍了Yii2.0 RESTful API 基础配置教程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • php 在字符串指定位置插入新字符的简单实现

    php 在字符串指定位置插入新字符的简单实现

    下面小编就为大家带来一篇php 在字符串指定位置插入新字符的简单实现。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 从零开始学YII2框架(二)通过 Composer 安装扩展插件

    从零开始学YII2框架(二)通过 Composer 安装扩展插件

    在使用Yii框架开发的过程中,有一些优秀的插件可以让我们事半功倍。下面来介绍通过Composer安装Yii2插件的方法。
    2014-08-08
  • php导出word文档与excel电子表格的简单示例代码

    php导出word文档与excel电子表格的简单示例代码

    本篇文章主要是对php导出word文档与excel电子表格的简单示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-03-03
  • 创建无限极分类树型结构的简单方法

    创建无限极分类树型结构的简单方法

    下面小编就为大家带来一篇创建无限极分类树型结构的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • 浅谈mysql_query()函数的返回值问题

    浅谈mysql_query()函数的返回值问题

    下面小编就为大家带来一篇浅谈mysql_query()函数的返回值问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • php使用异或实现的加密解密实例

    php使用异或实现的加密解密实例

    字符串的加密解密在数据的处理中应该是经常使用的,但MD5加密是不可逆的,所以自能自己动手写一个加密解密函数,思路很。网上看了几个用异或实现的思路,看懂后就自己写了一下。异或的思路很简单,用个公示简单的表示下吧
    2013-09-09

最新评论