Laravel项目用GuzzleHttp请求API遇302错误,返回空值求助
Laravel HTTP请求遇302错误的排查与解决
问题排查与修复方案
结合你的代码片段,以下是具体的问题点和解决办法:
1. 修正查询参数传递方式
Laravel的Http facade的get方法第二个参数直接接收关联数组作为URL查询参数,不需要嵌套在query_param键下。原代码的写法会导致参数无法被正确解析,目标API可能因缺少必要参数返回302跳转。
修正后的代码:
$list_receiveItem = Http::withHeaders([ 'Authorization' => 'Bearer ' . $data['access_token'], 'X-Session-ID' => $xsessionID, 'Accept' => 'application/json' ])->withOptions([ 'allow_redirects' => false ])->get($host . '/api/item/list.do', [ 'fields' => 'id,name,no', 'filter.itemType' => 'INVENTORY' ]);
2. 检查URL拼接正确性
确保$host的格式正确,避免末尾带有斜杠导致拼接出//api/item/list.do这类错误路径。可以使用Laravel的url()辅助函数安全拼接URL:
$endpoint = url($host, '/api/item/list.do'); // 再将$endpoint传入get方法
3. 验证API请求方法
确认目标API的/api/item/list.do端点是否确实支持GET请求。部分系统的列表查询接口可能要求使用POST方法,若用错请求方式会触发302跳转。
4. 排查跳转目标
即使禁用了重定向,你可以通过以下代码获取跳转的目标地址,从中分析具体原因:
dd($list_receiveItem->header('Location'));
跳转地址通常会暴露问题根源,比如权限验证页面、不存在的端点路径等。
内容的提问来源于stack exchange,提问作者Tommy Saputra
相关产品推荐
相关产品推荐

