2011-11-13 8 views
234

PHPでcURL HTTPリクエストにカスタムヘッダを追加できるかどうかは疑問です。私はiTunesがアートワークを取り込む方法をエミュレートしようとしており、これらの非標準ヘッダを使用しています。PHP cURLカスタムヘッダ

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

これらのヘッダをリクエストにどのように追加できますか?

答えて

506
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

+53

あなたはクッキーを受けなければなりません – SebastianView

+12

@セバスチャン・ビューそして彼はセッションに値します;) – Turtle

+0

、ありがとう。私はJSONのリストとしてプッシュしようとしていました。違う。これは正しいです。 – Andy

116

次の構文を使用し

$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 ; 
+15

あなたもクッキーに値する – SebastianView

+2

ユーザーエージェントの文字列を偽装することは、私にとっては悪い考えです。 [ここにHTTPの仕様](https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43)。 – starbeamrainbowlabs

+1

@Sebastianあなたはクッキーを取得します。あなたはクッキーを手に入れます!あなたはクッキーを手に入れます!誰もがクッキーを取得! – Dheeraj

0

ここでは、一つの基本機能は次のとおりです。

/** 
* 
* @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);