这是一个简单的代码片段,但这只是挂起和无响应。
$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();
非常感谢任何指针。当我使用我的用户名和密码尝试上面的Github API时,我确实得到了200的响应和大量的信息。
7条答案
按热度按时间ftf50wuq1#
问题是当使用
php artisan serve
时,它使用的PHP服务器是single-threaded。Web服务器只运行一个单线程进程,因此如果请求被阻塞,PHP应用程序将停止。
您可以执行此操作solution:
当调用自身时,线程阻塞等待自己的响应。解决方案是将提供应用程序和使用应用程序分离到各自的示例中,或者在多线程Web服务器上运行,如Apache或nginx。
或者如果你正在寻找一个快速修复来测试你的更新-你可以通过打开两个命令提示符来完成。第一个将运行
php artisan serve
(本地我的默认端口是8000,而你将在http://localhost:8000
上运行你的站点)。第二个将运行php artisan serve --port 8001
。然后,您可以将发布请求更新为:
这在您的测试过程中应该会有所帮助,直到您能够将所有内容都放在服务器或本地虚拟主机上。
xkftehaa2#
我也遇到了同样的问题。我通过如下定义
base_uri
来解决这个问题。qhhrdooz3#
最后解决了这个问题。如果你从非标准端口运行,Guzzle(或者CURL)会拒绝请求。
此外,这似乎是随机的,有时它的工作,有时它不。我搬到港口80和瞧,一切工作。
yi0zb3m44#
您可以使用另一个端口运行另一个Web服务器示例,并将应用程序配置为在连接到API时使用此base_uri:
在另一个控制台中,php工匠服务器\默认为端口8000 \php工匠服务器--port=8001
请求(“获取”,“http://localhost:8001/api/tests”)
rkkpypqq5#
如果
http://localhost:8000/BlogApiV1/BlogApi/blogs
的脚本运行良好,我敢打赌X-API-KEY
不会被发送。如果您查看文件(http://docs.guzzlephp.org/en/latest/request-options.html#headers),您的选项数组格式似乎不正确。
应该是
mgdq6dx16#
将
connect_timeout
设置为false
对我的本地开发(Laravel)很有效,只是请求通过需要很长时间!rggaifut7#
这个问题修复在我的结束。尝试这个-〉配置您的Laravel文件到IIS或XAMPP服务器,然后尝试通过您的本地IP地址运行,如(192. 168. X. X)。