Flutter CachedNetworkImage 使用网易云链接403错误解决方案

Flutter CachedNetworkImage 使用网易云链接403错误解决方案

报错信息

依旧是熟悉的错误

dart 复制代码
======== Exception caught by image resource service ================================================
The following HttpExceptionWithStatus was thrown resolving an image codec:
HttpException: Invalid statusCode: 403, uri = https://p1.music.126.net/q7UebOEf7TUkQ_NhBZSNlg==/109951167926630292.jpg?param=512y512

When the exception was thrown, this was the stack: 
Image provider: CachedNetworkImageProvider("https://p1.music.126.net/q7UebOEf7TUkQ_NhBZSNlg==/109951167926630292.jpg?param=512y512", scale: 1.0) 
 Image key: CachedNetworkImageProvider("https://p1.music.126.net/q7UebOEf7TUkQ_NhBZSNlg==/109951167926630292.jpg?param=512y512", scale: 1.0): CachedNetworkImageProvider("https://p1.music.126.net/q7UebOEf7TUkQ_NhBZSNlg==/109951167926630292.jpg?param=512y512", scale: 1.0)

解决办法

点击查看CachedNetworkImage的源码,再查看CachedNetworkImageProvider

找到Stream<ui.Codec> _loadBufferAsync()这一个方法

点击DefaultCacheManager跳转到相关源码

点击CacheManager跳转,然后找到Future<FileInfo> downloadFile()这么一个方法

点击downloadFile方法跳转

点击_downloadOrAddToQueue(url, key, authHeaders)方法跳转

点击_updateFile(url, key, authHeaders: authHeaders))方法

点击_download(cacheObject, authHeaders)方法

点击fileFetcher这个变量

点击HttpFileService()这个方法

点击Client()这个方法,然后跳转到这个页面

点击createClient(),然后可以看到这里有两个实现类browser_client.dart io_client.dart的文件路径

然后我们返回上一个页面,也就是刚刚createClient()的页面,往上看头文件

browser_client.dart文件修改如下

找到Future<StreamedResponse> send(BaseRequest request)这个方法,添加如下代码

dart 复制代码
request.headers.remove("user-agent", "Dart/3.1 (dart:io)");

io_client.dart文件修改如下

找到Future<IOStreamedResponse> send(BaseRequest request)这个方法,添加如下代码

dart 复制代码
ioRequest.headers.remove("user-agent", "Dart/3.1 (dart:io)");

至此修复完成

相关推荐
curdcv_po6 分钟前
报错 /bin/sh: .../scrcpy-server: cannot execute binary file
前端
小公主6 分钟前
用原生 JavaScript 写了一个电影搜索网站,体验拉满🔥
前端·javascript·css
代码小学僧7 分钟前
通俗易懂:给前端开发者的 Docker 入门指南
前端·docker·容器
Moment9 分钟前
为什么我在 NextJs 项目中使用 cookie 存储 token 而不是使用 localstorage
前端·javascript·react.js
lyc2333339 分钟前
鸿蒙Next加解密算法框架入门:安全基石解析🔐
前端
用户11481867894849 分钟前
Vue3 性能优化解析
前端
lyc23333312 分钟前
鸿蒙Web组件调试:从DevTools到崩溃分析的高效攻略👨🔧
前端
curdcv_po13 分钟前
在Mac的Finder中,显示“usr,tmp,var”等隐藏目录?
前端
F_Director14 分钟前
傻子都能理解的 React Hook 闭包陷阱
前端·react.js·源码阅读
aze17 分钟前
恩师AI之Next.js 静态导出中 "use client" 指令的作用
前端·next.js