许多同学在第一次使用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 curl使用实例,包括了PHP curl使用实例的使用技巧和注意事项,需要的朋友参考一下 概述 本博客的前面两篇文章:curl和libcurl简介以及PHP中使用curl对PHP中curl的使用做了简单介绍,但是PHP中curl的使用却并不简单,尤其是curl的各种配置项,本篇文章会讲解几个PHP的实例,以便大家更好的理解curl。 实例:抓取页面 使用curl抓取页面相对来
本文向大家介绍PHP中使用curl入门教程,包括了PHP中使用curl入门教程的使用技巧和注意事项,需要的朋友参考一下 概述 在我的上一篇文章“curl和libcurl简介”中简单的给大家介绍了curl相关的知识。这篇文章向大家介绍一下PHP中的curl扩展。 尽管在上一篇文章中,对curl和libcurl做了区分,也解释了某些相关的概念。同时,也知道了PHP中的curl扩展其实是对libcurl
我需要为OAuth2.0获取access_token和refresh_token来访问Google API,下面的php脚本应该返回一个带有access_token和refresh_token的json,如下所示: 但是,php脚本只返回这个错误消息:
我尝试在php中运行curl命令使用exec方法,它在我的Linux服务器中运行良好,但在我的Windows机器中不工作,我也检查了我的PHP配置文件,在那里启用了curl。它不起作用的问题是什么? 我的命令是(一个用于Linux的命令,这个命令在那里成功运行)“curl-u admin:geoserver-XPUT-H”Content type:image/tiff”--data binary@
问题内容: 如何使用cURL在PHP中进行RAW POST? 未经处理的原始帖子没有任何编码,我的数据存储在字符串中。数据应采用以下格式: 一种选择是手动编写要发送的整个HTTP标头,但这似乎不太理想。 无论如何,我是否可以仅将选项传递给curl_setopt(),这些选项表示使用POST,使用文本/纯文本以及从中发送原始数据? 问题答案: 我刚刚找到了解决方案,可以回答我自己的问题,以防其他人偶
主要内容:概述,需求,安装,资源类型,PHP cURL 函数概述 PHP支持的由Daniel Stenberg创建的libcurl库允许你与各种的服务器使用各种类型的协议进行连接和通讯。 libcurl目前支持http、https、ftp、gopher、telnet、dict、file和ldap协议。libcurl同时也支持HTTPS认证、HTTP POST、HTTP PUT、 FTP 上传(这个也能通过PHP的FTP扩展完成)、HTTP 基于表单的上传、