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

Каков новый способ установки заголовка по умолчанию для Guzzle без передачи его как параметра на каждые $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

как мне делать то же самое для Basic Auth имя пользователя и передать? – Zhianc

+3

В Guzzle 6 вы можете устанавливать только параметры по умолчанию при создании клиента. Если вам нужно работать с существующим экземпляром, вы больше не сможете его настраивать. См. [Что заменяет client-> setDefaultOption?] (Https://github.com/guzzle/guzzle/issues/1419). «О, эй, давайте сделаем вещи менее гибкими, просто потому, что будет выглядеть много [Enterprise] (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

Если вы используете жрать у = 6,0. *

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

read the doc, есть больше вариантов.

+0

В соответствии с заголовками документов есть параметры запроса, а не параметры клиента. Оба взаимозаменяемы? – andig

+0

Вы устанавливаете его в экземпляре клиента, но с ключевыми «заголовками» => [...] (как вы можете видеть выше). Не тестировал, но предполагал, что можно изменить ... – tasmaniski

+1

Кто-нибудь знает, как добавить заголовок по умолчанию после создания экземпляра клиента? –

0

это работает для меня, если вы делаете это с Друпала:

$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); 
Смежные вопросы