Как установить заголовок по умолчанию в Guzzle?

$baseUrl = 'http://foo';
$config = array();
$client = new Guzzle\Http\Client($baseUrl, $config);

Какой новый способ установить заголовок по умолчанию для Guzzle, не передавая его как параметр на каждом $client->post($uri, $headers)?

Там $client->setDefaultHeaders($headers) но он устарел.

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

Ответ 2

Если вы используете Guzzle v = 6.0. *

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

прочитайте документ, есть еще варианты.

Ответ 3

Правильно, старый метод был помечен как @deprecated. Вот новый предложенный метод установки заголовков по умолчанию для нескольких запросов на клиенте.

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

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

Ответ 4

это работает для меня, если вы делаете это с 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);