2013-07-20 14 views
12
$baseUrl = 'http://foo'; 
$config = array(); 
$client = new Guzzle\Http\Client($baseUrl, $config); 

प्रत्येक $client->post($uri, $headers) पर पैरामीटर के रूप में गुजरने के बिना गुज़ल के लिए डिफ़ॉल्ट शीर्षलेख सेट करने का नया तरीका क्या है?Guzzle में डिफ़ॉल्ट शीर्षलेख कैसे सेट करें?

$client->setDefaultHeaders($headers) है लेकिन यह बहिष्कृत है।

setDefaultHeaders is deprecated. Use the request.options array to specify default request options 

उत्तर

13
$client = new Guzzle\Http\Client(); 

// Set a single header using path syntax 
$client->setDefaultOption('headers/X-Foo', 'Bar'); 

// Set all headers 
$client->setDefaultOption('headers', array('X-Foo' => 'Bar')); 

यहाँ देखें:

http://docs.guzzlephp.org/en/latest/http-client/client.html#request-options

+0

कैसे मैं मूल प्रमाणीकरण उपयोगकर्ता नाम भी ऐसा ही करने और पारित करते हैं? – Zhianc

+3

गुज़ल 6 में, आप केवल क्लाइंट इंस्टेंटेशन पर डिफ़ॉल्ट विकल्प सेट कर सकते हैं। अगर आपको किसी मौजूदा इंस्टेंस के साथ काम करना है, तो आप इसे और कॉन्फ़िगर नहीं कर सकते हैं। देखें [क्लाइंट-> setDefaultOption क्या बदलता है?] (Https://github.com/guzzle/guzzle/issues/1419)। "ओह हे, चलो चीजों को कम लचीला बनाते हैं, सिर्फ इसलिए। बहुत अधिक देखेंगे [एंटरप्राइज़] (https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition)"। आह। –

2

सही है, पुराने तरीके के रूप में @deprecated चिह्नित किया गया है। क्लाइंट पर एकाधिक अनुरोधों के लिए डिफ़ॉल्ट शीर्षलेख सेट करने का नया सुझाया गया तरीका यहां दिया गया है।

// enter base url if needed 
$url = ""; 
$headers = array('X-Foo' => 'Bar'); 

$client = new Guzzle\Http\Client($url, array(
    "request.options" => array(
     "headers" => $headers 
    ) 
)); 
17

आप guzzle v उपयोग कर रहे हैं = 6.0। *

$client = new GuzzleHttp\Client(['headers' => ['X-Foo' => 'Bar']]); 

read the doc, वहाँ अधिक विकल्प हैं।

+0

डॉक्स हेडर के अनुसार अनुरोध विकल्प हैं, ग्राहक विकल्प नहीं। क्या दोनों विनिमयशील हैं? – andig

+0

आप इसे क्लाइंट इंस्टेंस में सेट करते हैं लेकिन कुंजी 'हेडर' => [...] के साथ (जैसा कि आप ऊपर देख सकते हैं)। इसका परीक्षण नहीं किया लेकिन मान लीजिए कि बदला जा सकता है ... – tasmaniski

+1

क्या किसी को पता है कि क्लाइंट को तत्काल करने के बाद डिफ़ॉल्ट हेडर कैसे जोड़ना है? –

0

यह मेरे लिए काम करता है अगर आप इसे Drupal के साथ कर रहे हैं:

$url="https://jsonplaceholder.typicode.com/posts"; 
    $client = \Drupal::httpClient(); 
    $post_data = $form_state->cleanValues()->getValues(); 
    $response = $client->request('POST', $url, [ 
    'headers' => ['Content-Type' => 'application/x-www-form-urlencoded'], 
    'form_params' => $post_data, 
    'verify'=>false, 
    ]); 
    $body = $response->getBody()->getContents(); 
    $status = $response->getStatusCode(); 
    dsm($body); 
    dsm($status); 
संबंधित मुद्दे