我想知道是否/如何在PHP中为cURL HTTP请求添加自定义头。我尝试模拟iTunes如何抓取艺术作品,它使用这些非标准头:
X-Apple-Tz: 0 X-Apple-Store-Front: 143444,12
如何将这些标头添加到请求中?
v7pvogib1#
curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'X-Apple-Tz: 0', 'X-Apple-Store-Front: 143444,12' ]);
https://www.php.net/manual/en/function.curl-setopt.php
w8f9ii692#
使用以下语法
$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 ;
wkyowqbh3#
$subscription_key = ''; $host = ''; $request_headers = [ '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);
x7yiwoj44#
下面是一个基本函数:
/** * * @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 (!empty($post_fields)) { curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_fields); } if (!empty($headers)) curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); 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']; $dat = cUrlGetData($url, $post_fields, $headers);
4条答案
按热度按时间v7pvogib1#
https://www.php.net/manual/en/function.curl-setopt.php
w8f9ii692#
使用以下语法
wkyowqbh3#
x7yiwoj44#
下面是一个基本函数:
用法示例: