Как установить заголовок по умолчанию в 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
Ответы
Ответ 1
$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
Ответ 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);