提问人:Leif 提问时间:11/17/2023 更新时间:11/17/2023 访问量:40
如何从 Laravel 应用程序获取可用的 PSR-7 HTTP 客户端,而不局限于特定实现?
How to get a usable PSR-7 HTTP client from Laravel app without being restricted to a specific implementation?
问:
如何在 Laravel 9.52 上重现该问题:
$client = Illuminate\Support\Facades\Http::buildClient();
$response = $client->get('https://google.com');
您可以在 tinker 中轻松检查这一点。它恰好返回一个实例,但我只关心 PSR-7 兼容性,因为我想将客户端传递给需要 PSR-7 兼容客户端的库。GuzzleHttp\Client
但是客户端实际上不可用,第二行抛出未设置数组键的异常。"laravel_data"
它发生在第 1200 行:https://github.com/laravel/framework/blob/082345d76fc6a55b649572efe10b11b03e279d24/src/Illuminate/Http/Client/PendingRequest.php#L1200Illuminate/Http/Client/PendingRequest.php
我的方法似乎很明显,我确实寻找了很多替代方案,但无济于事。你是怎么做到的?
答: 暂无答案
评论
GuzzleHttp/client
GuzzleHttp\Client
工具,所以它应该可以满足您的需求。你可以只是为了得到客户。Laravel 的方法返回一个损坏的客户端这一事实对我来说似乎是一个错误,可能值得报告。Psr\Http\Client\ClientInterface
$client = new GuzzleHttp\Client();
buildClient()
createClient
而不是,但这本质上与执行@miken32建议的操作相同,您还需要提供一个消耗量大的处理程序堆栈。buildClient