curl数据请求

3 篇文章 0 订阅

方法1(多用于get请求)

file_get_contents();

方法2(不带header头的普通请求)

/**
 * @param  mixed  $url          请求url
 * @param  mixed  $ispost        是否是post请求
 * @param  mixed  $post_data    post请求数据
 * @return mixed  $output        返回数据
 */
function curl_get_contents($url = '', $ispost = 0, $post_data = array())
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
    curl_setopt($ch, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 设置超时限制防止死循环
    curl_setopt($ch, CURLOPT_HEADER, 0); // 查询显示返回的Header区域内容
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
    if ($ispost)
    {
        curl_setopt($ch, CURLOPT_POST, $ispost);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
    }
    $output = curl_exec($ch);
    curl_close($ch);
    return $output;
}

方法3(header头携带自定义参数)

function http_request($url1,$data = null)
{
    $curl= curl_init();
    curl_setopt($curl,CURLOPT_URL,$url1);
    curl_setopt ($curl,CURLOPT_HTTPHEADER,array (
        'outid: 0000000000000000'
    ) );//可自定义头部传输的参数
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);
    if (!empty($data)){
        curl_setopt($curl,CURLOPT_POST,1);
        curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
    }
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
    $output= curl_exec($curl);
    curl_close($curl);
    return $output;
}

方法4(携带自定义cookie)

//携带自定义cookie
function https_request($url, $data = null,$cookie)
{
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    $header[] = 'cookiew:'.$cookie;
    curl_setopt($curl, CURLOPT_HTTPHEADER,$header);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
    if (!empty($data)){
        curl_setopt($curl, CURLOPT_POST, 1);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
    }
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $output = curl_exec($curl);
    curl_close($curl);
    return $output;
}

方法5(自定义header头信息)

<?php
/**
 * Curl请求(包含请求头信息、返回头信息、返回值)
 * @param $url
 * @param array $params
 * @param array $header
 * @return array
 */
function curlRequest($url,$params = array(),$header=array())
{
    $ch= curl_init();//初始化curl
    curl_setopt($ch,CURLOPT_URL,$url);//抓取指定网页
    curl_setopt($ch,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);// 模拟用户使用的浏览器
    curl_setopt($ch,CURLOPT_HEADER,1);//设置是否返回response header
    
    //当需要通过curl_getinfo来获取发出请求的header信息时,该选项需要设置为true
    curl_setopt($ch,CURLINFO_HEADER_OUT,true);
    curl_setopt($ch,CURLOPT_ENCODING,'gzip,deflate');
    curl_setopt($ch,CURLOPT_TIMEOUT,5);
    curl_setopt($ch,CURLOPT_POST,true);
    curl_setopt($ch,CURLOPT_POSTFIELDS,$params);
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);//要求结果为字符串且输出到屏幕上
    curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
    //header数据的输出必须依赖这个函数
    curl_setopt($ch,CURLOPT_HEADERFUNCTION,
        function ($curl,$header)use (&$headers) {
            $len= strlen($header);
            $header = explode(':',$header,2);
            if (count($header)< 2)// ignore invalid headers
                return $len;
            $headers[strtolower(trim($header[0]))]= trim($header[1]);
            return $len;
        }
    );
    $res= array();
    //返回值
    $res['data']= curl_exec($ch);
    //返回头信息
    $res['response_header']= $headers;
    //请求头信息
    $request_header= curl_getinfo($ch,CURLINFO_HEADER_OUT);
    $res['request_header']= $request_header;
    //如果请求有报错,则将错误信息打印出来
    $errno= curl_errno($ch);
    if ($errno) {
        echo 'Errno:'.$errno.'<br>error:'.curl_error($ch).'<br>';
    }
    curl_close($ch);
    return $res;
}

//调用示例
$url= "www.baidu.com";
$content['username']= "admin";
$content['password']= "123456";
$header= array(
    "Cache-Control: no-cache",
    "Connection: keep-alive",
    "errorlog: true"
);
$data= curlRequest($url,$content,$header);
print_r($data);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值