Home >Backend Development >PHP Problem >How to set header parameters for php curl request

How to set header parameters for php curl request

coldplay.xixi
coldplay.xixiOriginal
2020-08-05 11:22:0110750browse

How to set header parameters for php's curl request: first use [CURLOPT_HTTPHEADER] to set an array of HTTP header fields; then use an HTTP header that only contains necessary header fields by default.

How to set header parameters for php curl request

How to set header parameters in php’s curl request:

When curl request parameters are set, CURLOPT_HTTPHEADER Set the array of HTTP header fields.

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

Simple example:

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);

When you use curl to send a When a URL sends an HTTP request, it uses an HTTP header that by default contains only the necessary header fields (such as User-Agent, Host, and Accept).

But in some cases, you may want to override the default HTTP headers or add a new custom header field in an HTTP request. For example, you might want to override the "HOST" field to test a load balancer, or impersonate a specific browser by rewriting the "User-Agent" string to work around some access restrictions.

Recently researched the data related to 12306 train tickets. When you want to capture the remaining ticket information, the local request must set the User-Agent" string to impersonate a specific browser, otherwise the request will fail:

/**
 * 余票查询
 * 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;
}

Related video recommendations: PHP programming from entry to proficiency

The above is the detailed content of How to set header parameters for php curl request. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn