首页 文章

PHP cURL自定义标头

提问于
浏览
291

我想知道是否/如何在PHP中为cURL HTTP请求添加自定义标头 . 我试图模仿iTunes如何抓取艺术作品并使用这些非标准 Headers :

X-Apple-Tz: 0
X-Apple-Store-Front: 143444,12

如何将这些标头添加到请求中?

4 回答

  • 6
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        'X-Apple-Tz: 0',
        'X-Apple-Store-Front: 143444,12'
    ));
    

    http://www.php.net/manual/en/function.curl-setopt.php

  • 139

    使用以下语法

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,"http://www.example.com/process.php");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,$vars);  //Post Fields
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    
    $headers = [
        'X-Apple-Tz: 0',
        'X-Apple-Store-Front: 143444,12',
        'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
        'Accept-Encoding: gzip, deflate',
        'Accept-Language: en-US,en;q=0.5',
        'Cache-Control: no-cache',
        'Content-Type: application/x-www-form-urlencoded; charset=utf-8',
        'Host: www.example.com',
        'Referer: http://www.example.com/index.php', //Your referrer address
        'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:28.0) Gecko/20100101 Firefox/28.0',
        'X-MicrosoftAjax: Delta=true'
    ];
    
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
    $server_output = curl_exec ($ch);
    
    curl_close ($ch);
    
    print  $server_output ;
    
  • 620

    这是一个基本功能:

    /**
     * 
     * @param string $url
     * @param string|array $post_fields
     * @param array $headers
     * @return type
     */
    function cUrlGetData($url, $post_fields = null, $headers = null) {
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch, CURLOPT_URL, $url);
        if ($post_fields && !empty($post_fields)) {
            curl_setopt($ch, CURLOPT_POST, 1);
            curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields);
        }
        if ($headers && !empty($headers)) {
            curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $data = curl_exec($ch);
        if (curl_errno($ch)) {
            echo 'Error:' . curl_error($ch);
        }
        curl_close($ch);
        return $data;
    }
    

    用法示例:

    $url = "http://www.myurl.com";
    $post_fields = 'postvars=val1&postvars2=val2';
    $headers = ['Content-Type' => 'application/x-www-form-urlencoded', 'charset' => 'utf-8'];
    $dat = cUrlGetData($url, $post_fields, $headers);
    
  • 2
    $subscription_key  ='';
        $host = '';    
        $request_headers = array(
                        "X-Mashape-Key:" . $subscription_key,
                        "X-Mashape-Host:" . $host
                    );
    
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $request_headers);
    
        $season_data = curl_exec($ch);
    
        if (curl_errno($ch)) {
            print "Error: " . curl_error($ch);
            exit();
        }
    
        // Show me the result
        curl_close($ch);
        $json= json_decode($season_data, true);
    

相关问题