首页 > 解决方案 > Laravel Guzzle HTTP 不断返回 404

问题描述

我正在使用 openlibrary 的 API 来获取图书数据。我对一些保持返回 404 的 API(不是全部)有问题,但是当我使用邮递员进行测试时,它工作正常。

$response = Http::get('http://openlibrary.org/search.json', [
'q' => 'Johngreen'
]);
dd($response->body());

标签: laravelguzzle

解决方案


我用 Laravel 测试了这个端点,我遇到了同样的问题,但它适用于 Postman 和浏览器。

该问题与客户端的用户代理有关。如果不设置,Openlibrary 无法检查 API 调用的来源(浏览器和 Postman 发送自己的用户代理)。

我用这段代码解决了:

$guzzle_client = new \GuzzleHttp\Client();

$response = $this->guzzleClient->get("http://openlibrary.org/search.json?q=Johngreen", [
    'headers' => ['User-Agent' => 'PUT AN USER AGENT HERE']
]);
        
$response_body = json_decode($response->getBody()->getContents(), true);
dd($response_body);

尝试使用此用户代理:

Mozilla/5.0 (Macintosh; Intel Mac OS X 11_2_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36

或使用另一个


推荐阅读