Heim  >  Artikel  >  Backend-Entwicklung  >  So legen Sie Header-Parameter für eine PHP-Curl-Anfrage fest

So legen Sie Header-Parameter für eine PHP-Curl-Anfrage fest

coldplay.xixi
coldplay.xixiOriginal
2020-08-05 11:22:0110500Durchsuche

So legen Sie Header-Parameter für die Curl-Anfrage von PHP fest: Verwenden Sie zuerst [CURLOPT_HTTPHEADER], um ein Array von HTTP-Header-Feldern festzulegen, und verwenden Sie dann einen HTTP-Header, der standardmäßig nur die erforderlichen Header-Felder enthält.

So legen Sie Header-Parameter für eine PHP-Curl-Anfrage fest

So legen Sie Header-Parameter in der Curl-Anfrage von PHP fest:

Wenn Curl-Anfrageparameter festgelegt sind, CURLOPT_HTTPHEADERlegen Sie das Array der HTTP-Header-Felder fest.

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

Einfaches Beispiel:

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

Wenn Sie Curl verwenden, um eine HTTP-Anfrage an eine URL zu senden, wird eine Standardeinstellung verwendet HTTP-Header, die nur notwendige Header-Felder enthalten (z. B. User-Agent, Host und Accept).

Aber in manchen Fällen möchten Sie vielleicht die Standard-HTTP-Header überschreiben oder ein neues benutzerdefiniertes Header-Feld in einer HTTP-Anfrage hinzufügen. Beispielsweise möchten Sie möglicherweise das Feld „HOST“ überschreiben, um einen Load Balancer zu testen, oder einen bestimmten Browser imitieren, indem Sie die Zeichenfolge „User-Agent“ umschreiben, um einige Zugriffsbeschränkungen zu umgehen.

Kürzlich die Daten zu 12306 Bahntickets recherchiert. Wenn Sie die restlichen Ticketinformationen erfassen möchten, muss die lokale Anfrage die Zeichenfolge „User-Agent“ so festlegen, dass sie sich als ein bestimmter Browser ausgibt, andernfalls schlägt die Anfrage fehl:

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

Verwandt Videoempfehlungen: PHP-Programmierung vom Einstieg bis zum Master

Das obige ist der detaillierte Inhalt vonSo legen Sie Header-Parameter für eine PHP-Curl-Anfrage fest. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn