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

Jaki jest nowy sposób ustawiania domyślnego nagłówka dla Guzzle bez przekazywania go jako parametru na każdym $client->post($uri, $headers)?Jak ustawić domyślny nagłówek w Guzzle?

Jest $client->setDefaultHeaders($headers), ale jest przestarzałe.

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

Odpowiedz

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')); 

Zobacz tutaj:

http://docs.guzzlephp.org/en/latest/http-client/client.html#request-options

+0

jak mogę zrobić to samo dla Podstawowa Autentyczna nazwę użytkownika i hasło? – Zhianc

+3

W Guzzle 6 można ustawić tylko domyślne opcje w instancji klienta. Jeśli musisz pracować z istniejącą instancją, nie możesz jej już skonfigurować. Zobacz [Co zastępuje client-> setDefaultOption?] (Https://github.com/guzzle/guzzle/issues/1419). "Och, hej, zróbmy rzeczy mniej elastyczne, tylko dlatego. Będzie wyglądać dużo [Enterprise] (https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition)". Westchnienie. –

2

poprawne, stara metoda została oznaczona jako @deprecated. Oto nowa sugerowana metoda ustawiania domyślnych nagłówków dla wielu żądań na kliencie.

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

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

Jeśli używasz chlać v = 6,0 *.

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

read the doc istnieje więcej opcji.

+0

Zgodnie z nagłówkami dokumentów są to opcje żądania, a nie opcje klienta. Czy oba są wymienne? – andig

+0

Ustawiono go w instancji klienta, ale z kluczem 'headers' => [...] (jak widać powyżej). Nie przetestowałem go, ale zakładam, że można go zmienić ... – tasmaniski

+1

Czy ktoś wie, jak dodać domyślny nagłówek po utworzeniu klienta? –

0

Działa to dla mnie jeśli robisz to z 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); 
Powiązane problemy