क्या मैं कई हेडर सेट करने के लिए कई बार CURLOPT_HTTPHEADER के साथ कर्ल_सेटॉप कह सकता हूं?


79

मैं फोन कर सकते हैं curl_setoptके साथ CURLOPT_HTTPHEADERकई हेडर स्थापित करने के लिए एक से अधिक बार?

$url = 'http://www.example.com/';

$curlHandle = curl_init($url);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Content-type: application/xml'));
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, array('Authorization: gfhjui'));

$execResult = curl_exec($curlHandle);

जब आप केवल एक बार ऐसा कर सकते हैं और एक ही परिणाम प्राप्त कर सकते हैं, तो आप एक फ़ंक्शन को कई बार क्यों कॉल करेंगे? आप अधिक ओवरहेड दे रहे हैं और आप कोड को हेडर घोषणाओं के साथ सभी जगह पर रख सकते हैं।
ट्यूडर

1
यह कुछ मापदंडों को सशर्त रूप से सेट करने के लिए उपयोगी हो सकता है या यदि आप एक प्रक्रिया में डिफ़ॉल्ट कर्ल हैंडल बनाते हैं और बाद में विशिष्ट हेडर जोड़ते हैं।
फ्लोरियन एफ

जवाबों:


118

अनुरोध के लिए आंतरिक रूप से कर्ल क्या करता है ( इस उत्तर में "Php - डिबगिंग कर्ल" के रूप में उल्लिखित विधि के माध्यम से ) प्रश्न का उत्तर देता है: नहीं, curl_setoptकॉल का उपयोग करना संभव नहीं है CURLOPT_HTTPHEADER। दूसरी कॉल पहली कॉल के हेडर को ओवरराइट कर देगी।

इसके बजाय फ़ंक्शन को सभी हेडर के साथ एक बार कॉल करने की आवश्यकता है:

$headers = array(
    'Content-type: application/xml',
    'Authorization: gfhjui',
);
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);

संबंधित (लेकिन अलग) प्रश्न हैं:


11

अन्य प्रकार का प्रारूप:

$headers[] = 'Accept: application/json';
$headers[] = 'Content-Type: application/json';
$headers[] = 'Content-length: 0';

curl_setopt($curlHandle, CURLOPT_HTTPHEADER, $headers);

0
/**
 * If $header is an array of headers
 * It will format and return the correct $header
 * $header = [
 *  'Accept' => 'application/json',
 *  'Content-Type' => 'application/x-www-form-urlencoded'
 * ];
 */
$i_header = $header;
if(is_array($i_header) === true){
    $header = [];
    foreach ($i_header as $param => $value) {
        $header[] = "$param: $value";
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.