php之cURL学习笔记2

<?php
//1、初始化一个cURL会话
$ch = curl_init();
//2、设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,'http://www.php.net');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // 将 curl_exec() 获取的信息以文件流的形式返回,
// 而不是直接输出。

curl_setopt($ch,CURLOPT_HEADER,0);// 启用时会将头文件的信息作为数据流输出。
//3 、 执行并获取html文档内容。
$output = curl_exec($ch);
//4、 释放cURL句柄;
curl_close($ch);
//echo $output;


检测cURL错误 和获取返回信息:

<?php
//1、初始化一个cURL会话
$ch = curl_init();
//2、设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,'http://www.php.net');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // 将 curl_exec() 获取的信息以文件流的形式返回,
// 而不是直接输出。

curl_setopt($ch,CURLOPT_HEADER,0);// 启用时会将头文件的信息作为数据流输出。
//3 、 执行并获取html文档内容。
$output = curl_exec($ch);
//$output = false;

//检测是否有错误:
if($output === false){
echo "cURL Error :" . curl_error($ch);
//如果是一个不存在的网址时:cURL Error :couldn't connect to host
}
$info = curl_getinfo($ch);
echo "<pre>";
var_dump($info);
echo "</pre>";

/*
array(20) {
["url"]=> //资源网络地址
string(18) "http://www.php.net"
["content_type"]=> //内容编码
string(23) "text/html;charset=utf-8"
["http_code"]=> //http 状态码
int(200)
["header_size"]=> //header的大小
int(458)
["request_size"]=> //请求的大小
int(50)
["filetime"]=> //文件创建时间
int(-1)
["ssl_verify_result"]=> //SSL 验证结果
int(0)
["redirect_count"]=> //跳转次数
int(0)
["total_time"]=> //耗时
float(1.034)
["namelookup_time"]=> //DNS 查询时间
float(0.005)
["connect_time"]=> //连接时间
float(0.213)
["pretransfer_time"]=> //准备传输耗时
float(0.213)
["size_upload"]=> //上传数据大小
float(0)
["size_download"]=> //下载数据大小
float(43125)
["speed_download"]=> //下载速度
float(41706)
["speed_upload"]=> //上传速度
float(0)
["download_content_length"]=> //下载内容长度
float(0)
["upload_content_length"]=> //上传内容长度
float(0)
["starttransfer_time"]=> //开始传输耗时
float(0.414)
["redirect_time"]=> //重定向耗时
float(0)
}
*/


//4、 释放cURL句柄;
curl_close($ch);
//echo $output;



cURL抓取图片:

<?php
//error_reporting(E_ALL);
//1、初始化一个cURL会话
//@header('Content-Type: image/jpg');
$ch = curl_init();
//2、设置选项,包括URL
curl_setopt($ch,CURLOPT_URL,"http://it227.sinaapp.com/Public/images/1.jpg");
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); // 将 curl_exec() 获取的信息以文件流的形式返回,
// 而不是直接输出。

//为什么这里要下面这句注释掉 才能抓取成功?

//curl_setopt($ch,CURLOPT_HEADER,1);// 启用时会将头文件的信息作为数据流输出。
//3 、 执行并获取html文档内容。
$output = curl_exec($ch);
$info = curl_getinfo($ch);

//4、 释放cURL句柄;
curl_close($ch);
echo $output;
//echo $info['size_download'];
file_put_contents('a.gif',$output);
$size = filesize('a.gif');
if($size != $info['size_download']){
echo "下载数据不完整";
} else {
echo "下载数据完整";
}


4.4.4 在cURL中用POST方法发送数据:
post_out.php

<?php

echo "<pre>";
var_dump($_POST);exit;
echo "</pre>";

demo.php:

<?php
$url = "http://localhost/demo/post_out.php";

$post_data = array(
'foo' => 'bra',
'foo2' => 'bphp',
'foo3' => 'ccca',
);
$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;


返回结果:
array
'foo' => string 'bra' (length=3)
'foo2' => string 'bphp' (length=4)
'foo3' => string 'ccca' (length=4)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值