欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

php的curl请求如何设置header参数

程序员文章站 2022-03-24 11:29:06
...

php的curl请求设置header参数的方法:首先使用【CURLOPT_HTTPHEADER】设置HTTP头字段的数组;然后使用一个默认只包含必要的头部字段的HTTP头。

php的curl请求如何设置header参数

php的curl请求设置header参数的方法:

curl请求参数设置时,CURLOPT_HTTPHEADER设置 HTTP 头字段的数组。

格式: array('Content-type: text/plain', 'Content-length: 100')

简单示例:

function http_post($sUrl, $aHeader, $aData){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $sUrl);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $aHeader);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($aData));
    $sResult = curl_exec($ch);
    if($sError=curl_error($ch)){
        die($sError);
    }
    curl_close($ch);
    return $sResult;
}
 
$url = 'https://www.example.com;
$header = array('User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');
$data = array();
$data = http_post($url,$header,$data);

当你使用curl向一个URL发送HTTP请求的时候,它会使用一个默认只包含必要的头部字段(如:User-Agent, Host, and Accept)的HTTP头。

但在一些个例中,或许你想要在一个HTTP请求中覆盖掉默认的HTTP头或者添加一个新的自定义头部字段。例如,你或许想要重写“HOST”字段来测试一个负载均衡,或者通过重写"User-Agent"字符串来假冒特定浏览器以解决一些访问限制的问题。

最近研究12306火车票相关的数据,想抓取余票信息的时候,本地请求必须设置User-Agent"字符串来假冒特定浏览器,不然就请求失败:

/**
 * 余票查询
 * leftTicketDTO.train_date: 时间
 * leftTicketDTO.from_station: 出发车站电码
 * leftTicketDTO.to_station: 目的车站电码
 * purpose_codes: 乘客类型(成人:ADULT,学生:0X00)
 * author 洋葱
 * @return bool|mixed
 */
function get_left_tickets(){
    $url = 'https://kyfw.12306.cn/otn/leftTicket/queryZ?';
//    $url = 'https://kyfw.12306.cn/otn/leftTicketPrice/query?';
    $param = [
        'leftTicketDTO.train_date' => '2019-02-13',
        'leftTicketDTO.from_station' => 'BJP',
        'leftTicketDTO.to_station' => 'SHH',
        'purpose_codes' => 'ADULT'
    ];
    $http_param = http_build_query($param);
    $url = $url.$http_param;
    //重写"User-Agent"字符串来假冒特定浏览器以解决访问限制的问题
    $header = array('User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36');
    $data = curl_request($url,true,'GET',null,$header);
    if($data){
        $data = json_decode($data,true);
    }
    return $data;
}

相关视频推荐:PHP编程从入门到精通

以上就是php的curl请求如何设置header参数的详细内容,更多请关注其它相关文章!

相关标签: php curl header