php curl 快速入门

     cURL 是一个利用URL 语法规定来传输文件和数据的工具,支持很多协议,如HTTPFTPTELNET 等。更让人高兴的是,PHP 也支持 cURL 库。本文将介绍PHP 中如何运用它。


基本结构

先来看一下在PHP 中建立cURL 请求的基本步骤:

  1. 初始化
  2. 设置变量
  3. 执行并获取结果
  4. 释放cURL 句柄


          1. 初始化

$ch = curl_init();


    2. 设置选项,包括URL

curl_setopt($ch, CURLOPT_URL, “http://www.nettuts.com”);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch, CURLOPT_HEADER, 0);


    3. 执行并获取HTML 文档内容

$output = curl_exec($ch);


    4. 释放curl 句柄

curl_close($ch);


    第二步(也就是 curl_setopt() )最为关键,有一长串cURL 参数可供设置,它们能指定URL 请求的各个细节。要一次性全部看完并理解可能比较困难,所以今天我们只试一下那些常用也更有用的选项。


检查错误

你可以加一段检查错误的语句(虽然这并不是必需的):

    // …

$output = curl_exec($ch);

if ($output === FALSE) {

echo “cURL Error: ” . curl_error($ch);

}

    // …

    注意,比较的时候我们用的是“=== FALSE” ,而非“== FALSE” 。因为我们得区分空输出和布尔值FALSE ,后者才是真正的错误。


POST 方法发送数据


    当发起GET 请求时,数据可以通过 查询字串query string )传递给一个URL 。例如,在google 中搜索时,搜索关键即为URL 的查询字串的一部分:

http://www.google.com/search?q=nettuts

这种情况下你可能并不需要cURL 来模拟。把这个URL 丢给“file_get_contents()” 就能得到相同结果。


    不过有一些HTML 表单是用POST 方法提交的。这种表单提交时,数据是通过 HTTP 请求体(request body ) 发送,而不是查询字串。例如,当使用CodeIgniter 论坛的表单,无论你输入什么关键字,总是被POST 到如下页面:

http://codeigniter.com/forums/do_search/

你可以用PHP 脚本来模拟这种URL 请求。首先,新建一个可以接受并显示POST 数据的文件,我们给它命名为post_output.php

print_r($_POST);

接下来,写一段PHP 脚本来执行cURL 请求:

$url = “http://localhost/post_output.php”;

$post_data = array (

“foo” => “bar”,

“query” => “Nettuts”,

“action” => “Submit”

);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

// 我们在POST 数据哦!

curl_setopt($ch, CURLOPT_POST, 1);

// post 的变量加上

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

$output = curl_exec($ch);

curl_close($ch);

echo $output;

     这段脚本发送一个POST 请求给 post_output.php ,这个页面 $_POST 变量并返回,我们利用cURL 捕捉了这个输出。


小结

    今天我们一起学习了cURL 库。希望你喜欢。下一次如果要发起URL 请求时,请考虑下cURL 吧!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值