Guzzle HTTP - 直接将授权头添加到请求中

34

有人能解释一下如何在Guzzle中添加授权头吗?我看到下面的代码适用于添加用户名和密码,但在我的情况下,我只想添加授权头本身。

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

我想要添加到我的GET请求中的基本授权头信息:

Basic aGdkZQ1vOjBmNmFmYzdhMjhiMjcwZmE4YjEwOTQwMjc2NGQ3NDgxM2JhMjJkZjZlM2JlMzU5MTVlNGRkMTVlMGJlMWFiYmI=
4个回答

37

我不知道为什么错过了您寻找Basic auth头的信息,但无论如何,希望这可以在一定程度上帮助到您。如果您只想添加授权头Authorization header,那应该很容易。

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

希望这有所帮助。此外,请确保在未来的代码中包含所使用的库的版本号,因为语法会根据您使用的版本而变化。


35

我正在使用Guzzle 6。如果您想使用基本身份验证方案:

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

10

从所展示的情况来看,您正在尝试使用API密钥。为了获得您想要的效果,只需将null作为用户名传入即可,就像下面这样。

$client->request(
    $method,
    $url,
    [
        'auth' => [
            null,
            $api_key
        ],
    ]
);

1
变量赋值错误,您在'auth' = [处。 - Ben Osborne

1
use GuzzleHttp\Client;

...

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

这将创建一个授权的客户端,并发送一个带有所需参数的get请求。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接