我想知道是否/如何在PHP中为cURL HTTP请求添加自定义标头 . 我试图模仿iTunes如何抓取艺术作品并使用这些非标准 Headers :
X-Apple-Tz: 0 X-Apple-Store-Front: 143444,12
如何将这些标头添加到请求中?
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
使用以下语法
$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 ;
这是一个基本功能:
/** * * @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);
$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);
4 回答
http://www.php.net/manual/en/function.curl-setopt.php
使用以下语法
这是一个基本功能:
用法示例: