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

Guzzのデフォルトヘッダをすべて$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

Guzzle 6では、クライアントのインスタンシエーション時にのみデフォルトオプションを設定できます。既存のインスタンスで作業する必要がある場合は、それ以上構成することはできません。 [クライアント→setDefaultOptionと置き換わるもの](https://github.com/guzzle/guzzle/issues/1419)を参照してください。 "ああ、ちょっと柔軟性のないものにしましょう。ちょっとだけ、[Enterprise](https://github.com/EnterpriseQualityCoding/FizzBu​​zzEnterpriseEdition)になります。"一口。 –

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

あなたはがつがつ食うのV = 6.0を使用している場合。*

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

read the doc、より多くのオプションがあります。あなたはdrupalのでそれをやっている場合、これは私の作品

+0

ドキュメントのヘッダーによると、クライアントオプションではなくリクエストオプションです。両方とも互換性がありますか? – andig

+0

クライアントインスタンスでキーを 'header' => [...]に設定します(上記参照)。テストしませんでしたが、変更することができると仮定します... – 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); 
関連する問題