2015-07-24 11 views
7

In Guzzle con versione < 6 Dopo l'inizializzazione del client, ho utilizzato l'intestazione di autenticazione. Ho usato setDefaultOption() per questo.Impostare le opzioni di richiesta dopo l'inizializzazione nella cuffia 6

$client = new Client(['base_url' => $url]); 
$client->setDefaultOption('auth', [$username, $password]); 

Tuttavia questa funzionalità sembra essere deprecata nella versione 6. Come potrei fare questo?

Nota: il motivo per cui ho bisogno di farlo in questo modo è perché sto usando guzzle per richieste batch in cui alcune richieste richiedono parametri di autenticazione diversi.

+0

tutti gli aggiornamenti su questo? – younes0

+0

@ tomvo hai 2 buone risposte qui sotto. Si prega di accettare uno di loro. –

risposta

2

L'opzione migliore per Guzzle 6+ è ricreare il cliente. Il client HTTP di Guzzle è ora immutabile, quindi ogni volta che vuoi cambiare qualcosa devi creare un nuovo oggetto.

Questo non significa che si deve ricreare l'intero oggetto grafico, HandlerStack e middleware può rimanere lo stesso:

use GuzzleHttp\Client; 
use GuzzleHttp\HandlerStack; 

$stack = HandlerStack::create(); 
$stack->push(Middleware::retry(/* ... */)); 
$stack->push(Middleware::log(/* ... */)); 

$client = new Client([ 
    'handler' => $stack, 
    'base_url' => $url, 
]); 

// ... 

$newClient = new Client([ 
    'handler' => $stack, 
    'base_url' => $url, 
    'auth' => [$username, $password] 
]); 
1

È possibile inviare il parametro "auth" durante la costruzione del client o l'invio della richiesta.

$client = new Client(['base_url' => $url, 'auth' => ['username', 'password', 'digest']]); 

O

$client->get('/get', ['auth' => ['username', 'password', 'digest']]); 

L'altro modo è quello di riscrivere il metodo requestAsync e aggiungere la tua logica personalizzata in esso. Ma non c'è motivo per questo.

Problemi correlati