Here is a simple code snipplet but this just hangs and unresponsive.
$httpClient = new GuzzleHttp\Client(); // version 6.x
$headers = ['X-API-KEY' => '123456'];
$request = $httpClient->request('GET', 'http://localhost:8000/BlogApiV1/BlogApi/blogs/', $headers);
$response = $client->send($request, ['timeout' => 2]);
echo $request->getStatusCode();
echo $request->getHeader('content-type');
echo $request->getBody();
die();
Any pointers much appreciated. When I tried above with the github api using my username and password, I do get a 200 response and a lot of info.
Setting
connect_timeout
tofalse
worked for me on local development (Laravel), it just takes very long for the request to go through!The issue is when using
php artisan serve
, it uses a PHP server which is single-threaded.You can do this solution:
Or if you are looking for a quick fix to test your updates - you can get this done by opening up two command prompts. The first would be running
php artisan serve
(locally my default port is 8000 and you would be running your site onhttp://localhost:8000
). The second would runphp artisan serve --port 8001
.Then you would update your post request to:
This should help during your testing until you are able to everything on server or a local virtual host.
Finally resolved it. Guzzle (or CURL to be specific) is denying the requests if you're running from non-standard ports.
Also, this appears to be random, sometime it works, sometime it doesn't. I moved to port 80 and Voila everything worked.
This issue fixed in my end. Try this -> Configure your Laravel files into IIS or XAMPP server and then try to run via your local IP address like (192.168.X.X).
If the script at
http://localhost:8000/BlogApiV1/BlogApi/blogs
works well, my bet it that theX-API-KEY
is not being sent.If you look at the docs (http://docs.guzzlephp.org/en/latest/request-options.html#headers) it seems that you malformed the options array.
It should be
I was having the same issue. I got around it by defining
base_uri
as below.