Ali Gajani Ali Gajani - 1 year ago 114
PHP Question

Why is my Authorization Header giving me a 401 in Guzzle?

I am getting a 401 on Guzzle 4.2 and the same setup works on Postman. Code below.

// Create a client with a base URL
$client = new GuzzleHttp\Client(['base_url' => '']);

// Send a request to
$response = $client->get();

$response->addHeader('Authorization', "auth-code");

$r = $response->send();


The error is:

GuzzleHttp \ Exception \ ClientException (401)
Client error response [url] [status code] 401 [reason phrase] Unauthorized

Answer Source

Looking at the documentation page as per this line:

$response = $client->get();

It will send a get request, with no authorisation, hence the 401 response.

Try the following instead

// Create a client with a base URL.
$client = new GuzzleHttp\Client();

$request = $client-> createRequest('GET', '');

$request->setHeader('Authorization', "auth-code");

// Send.
$response = $client->send($request);


The above creates a request, set the authorisation header on it. Then once prepared it actually sends it.

I think it worked in Postman because your headers are set, if you remove the authorization header it will likely fail there too.

I have not tested this but think it will work.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download