使用Dio调用NewsAPI时遭遇401授权错误求助
解决Dio调用News API返回401未授权错误的方案
错误原因分析
HTTP 401状态码表示身份验证失败,你的代码里存在一个明显的拼写错误:在请求查询参数中,把API密钥的键名写成了piKey,而News API要求的正确键名是apiKey,这直接导致服务端无法识别你的授权密钥,从而返回未授权错误。
修正步骤
- 修正查询参数键名:在浮动按钮的点击事件中,将
piKey改为apiKey,这是解决问题的核心操作。 - 验证API密钥有效性:确认你的API密钥是从News官网正确获取且未过期,若密钥无效也会触发401错误,可以尝试替换为注释里的备用密钥测试。
- 优化错误排查:在Dio的错误捕获逻辑中添加状态码和响应数据打印,能更直观地定位后续可能出现的问题。
修正后的关键代码片段
floatingActionButton: FloatingActionButton( onPressed: () { DioHelper.getdata( url: 'v2/top-headlines', query: { 'country': 'eg', 'category': 'business', 'apiKey': '65f7f556ec76449fa7dc7c0069f040ca', // 修正键名为apiKey }, ).then((value) { print(value.data.toString()); }).catchError((error) { if (error is DioError) { print('错误状态码: ${error.response?.statusCode}'); print('错误响应数据: ${error.response?.data}'); } print('获取数据出错: ${error.toString()}'); }); }, child: const Icon(Icons.add), ),
内容的提问来源于stack exchange,提问作者Zeyad Mohamed
相关产品推荐
相关产品推荐

