web-dev-qa-db-ja.com

Guzzleでデフォルトヘッダーを設定する方法

_$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
_
30
Jürgen Paul
$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

26
drj201

Guzzle v = 6.0。*を使用している場合

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

ドキュメントを読む 、さらにオプションがあります。

32
tasmaniski

正しい、古いメソッドは@deprecatedとしてマークされています。クライアント上の複数のリクエストにデフォルトのヘッダーを設定するための新しい推奨方法を次に示します。

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

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

これは、Drupalで実行している場合に有効です。

<?php
$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);
1
user7938981