Guzzle HTTP — добавьте заголовок авторизации прямо в запрос

Кто-нибудь может объяснить, как добавить заголовок авторизации в Guzzle? Я вижу, что приведенный ниже код работает для добавления имени пользователя и пароля, но в моем случае я просто хочу добавить сам заголовок авторизации.

$client->request('GET', '/get', ['auth' => ['username', 'password']

Заголовок базовой авторизации, который я хочу добавить в свой запрос GET: -

Basic aGdkZQ1vOjBmNmFmYzdhMjhiMjcwZmE4YjEwOTQwMjc2NGQ3NDgxM2JhMjJkZjZlM2JlMzU5MTVlNGRkMTVlMGJlMWFiYmI=

person Zabs    schedule 15.03.2016    source источник


Ответы (4)


Судя по всему, вы пытаетесь использовать ключ API. Чтобы получить желаемый эффект, просто передайте null в качестве имени пользователя, как показано ниже.

$client->request(
    $method,
    $url,
    [
        'auth' => [
            null,
            $api_key
        ],
    ]
);
person Shaun Bramley    schedule 15.03.2016
comment
Неверное назначение переменной, где у вас есть 'auth' = [ - person Ben Osborne; 14.12.2020

Я не знаю, как я пропустил чтение о том, что вы искали заголовок Basic auth, но, тем не менее, надеюсь, что это немного поможет. Если вы просто хотите добавить заголовок авторизации, это должно быть довольно просто.

// Set various headers on a request
$client->request('GET', '/get', [
'headers' => [
    'Authorization'     => 'PUT WHATEVER YOU WANT HERE'
    ]
]);

Я создаю свой запрос в Guzzle по частям, поэтому я использую следующее:

$client = new GuzzleHttp\Client();
$request = $client->createRequest('GET', '/get');
$request->addHeader('X-Authorization', 'OAuth realm=<OAUTH STUFF HERE>');
$resp = $client->send($request);

Надеюсь, это поможет. Кроме того, не забудьте указать версию библиотек, которые вы будете использовать в будущем, поскольку синтаксис меняется в зависимости от вашей версии.

person Matt D.    schedule 15.03.2016

Я использую Guzzle 6. Если вы хотите использовать базовую схему аутентификации:

$client = new Client();
$credentials = base64_encode('username:password');
$response = $client->get('url',
        [
            'headers' => [
                'Authorization' => 'Basic ' . $credentials,
            ],
        ]);
person Agu Dondo    schedule 05.04.2017

use GuzzleHttp\Client;

...

$client = new Client(['auth' => [$username, $password]]);
$res = $client->request('GET', 'url', ['query' => ['param1'=>$p1, 'param2'=>'sometext']]);
$res->getStatusCode();
$response = $res->getBody();

Это создает авторизованного клиента и отправляет запрос на получение вместе с желаемыми параметрами.

person Grigoreas P.    schedule 28.10.2016