복붙노트

PHP cURL 사용자 정의 헤더

PHP

PHP cURL 사용자 정의 헤더

PHP에서 cURL HTTP 요청에 사용자 정의 헤더를 추가 할 수 있는지 궁금합니다. 나는 아이튠즈가 삽화를 붙잡고 그것을 어떻게 비표준 헤더를 사용하는지 에뮬레이션하려고한다.

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

요청에이 헤더를 어떻게 추가 할 수 있습니까?

해결법

  1. ==============================

    1.

    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

  2. ==============================

    2.다음 구문을 사용하십시오.

    다음 구문을 사용하십시오.

    $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 ;
    
  3. ==============================

    3.다음은 하나의 기본 기능입니다.

    다음은 하나의 기본 기능입니다.

    /**
     * 
     * @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);
    
  4. from https://stackoverflow.com/questions/8115683/php-curl-custom-headers by cc-by-sa and MIT license