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

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 要设置 PHP cURL 请求header,可以使用 CURLOPT_HTTPHEADER 选项。下面是一个简单的示例代码:$headers = array('Content-Type: application/json', 'Authorization: Bearer {token}'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $result = curl_exec($ch); curl_close($ch); ### 回答2: 可以使用PHPcURL扩展来设置请求头信息。以下是设置请求头的示例代码: ``` // 创建一个cURL句柄 $curl = curl_init(); // 设置请求URL curl_setopt($curl, CURLOPT_URL, "http://example.com"); // 设置请求头信息 $headers = array( "Content-Type: application/json", "Authorization: Bearer Your-Token" ); curl_setopt($curl, CURLOPT_HTTPHEADER, $headers); // 执行请求并获取响应 $response = curl_exec($curl); // 检查是否有错误发生 if (curl_errno($curl)) { $error_message = curl_error($curl); // 处理错误 } // 关闭cURL句柄 curl_close($curl); ``` 在上述代码中,通过使用`curl_setopt`函数来设置cURL选项。`CURLOPT_URL`用于指定请求的URL。`CURLOPT_HTTPHEADER`用于设置请求头信息,其中`$headers`是一个包含多个头部信息的数组。您可以根据需要自定义头部信息。最后,通过调用`curl_exec`函数来执行请求并获取响应。 如果请求期间发生错误,您可以使用`curl_errno`和`curl_error`函数来获取错误信息并进行相应的处理。 希望这个代码对您有所帮助! ### 回答3: 在PHP中,可以使用cURL函数库进行HTTP请求设置请求头信息可以通过设置`CURLOPT_HTTPHEADER`选项来完成。下面是一个设置header的示例代码: ```php // 初始化cURL会话 $ch = curl_init(); // 设置请求的URL curl_setopt($ch, CURLOPT_URL, "http://example.com"); // 设置请求头信息 $header = array( "Content-Type: application/json", "Authorization: Bearer token" ); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); // 其他cURL选项,如超时设置等 // 执行请求 $response = curl_exec($ch); // 检查是否有错误发生 if(curl_errno($ch)){ echo 'cURL错误:' . curl_error($ch); } // 关闭cURL会话 curl_close($ch); // 处理响应数据 echo $response; ``` 上述代码中,通过`curl_setopt()`函数设置了`CURLOPT_HTTPHEADER`选项,将请求头信息设置为一个包含多个字符串的数组`$header`。每个字符串代表一个请求头,可以根据需要自行添加。 注意,`CURLOPT_HTTPHEADER`选项要求请求头信息必须以字符串的形式进行设置,所以需谨慎使用。 以上代码示例仅供参考,实际使用中还需要根据具体情况进行调整和完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值