laravel - Laravel Guzzle HTTP 不断返回 404
问题描述
我正在使用 openlibrary 的 API 来获取图书数据。我对一些保持返回 404 的 API(不是全部)有问题,但是当我使用邮递员进行测试时,它工作正常。
$response = Http::get('http://openlibrary.org/search.json', [
'q' => 'Johngreen'
]);
dd($response->body());
解决方案
我用 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
或使用另一个
推荐阅读
- python - 如何运行秒数python?
- reactjs - react-navigation-fluid-transitions 的共享属性不起作用
- php - PHP字符串比较同字问题
- c# - 如何从 Xamarin xaml 表单应用程序打开超链接?
- r - 引用中的 R 降价页码
- python - 在 Windows 10 上安装 dlib 的问题(已安装 Cmake)
- python - Django 类别无法正常工作 href 无法正常工作
- javascript - 添加指向 Chart JS 部分的链接
- java - 为什么斐波那契数列的偶数位置之和给出否定答案?
- javascript - 获取用户的实时时间