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)");

至此修复完成

相关推荐
anew___1 小时前
《从零手写操作系统 (20):ELF加载器——让OS读懂现代编译器》
java·服务器·前端
ss2731 小时前
AI全栈实战 | 2.3-01 组件库实战:Element Plus 怎么搭出专业界面,过度封装为什么成维护负担
前端·javascript·elementui·vue
对空六课1 小时前
动态按钮ID变化时的稳定埋点标识设计
前端·数据分析
福兮说1 小时前
URL 编码的七个坑:c++ 传到后端变空格、%25 套娃、截断 emoji 直接报错
开发语言·前端·javascript·node.js·url
吴声子夜歌1 小时前
Nginx应用与运维——Nginx Web服务应用实战(Python网站的搭建)
运维·前端·nginx
小的时候可菜了1 小时前
JS 异步的本质:从单线程到 thenable(一条进化链)
开发语言·前端·javascript
liangshanbo12151 小时前
Webpack vs Vite 底层原理高频追问的问题
前端·webpack·node.js
m0_738185822 小时前
Flutter 鸿蒙化实战:flutter_nfc_kit 适配 OpenHarmony,NFC 读写一步到位
flutter·华为·harmonyos·鸿蒙
web打印社区2 小时前
Windows 网页静默打印设置步骤:客户端、防火墙与联调清单
开发语言·前端·javascript·chrome·pdf·ecmascript
恋猫de小郭2 小时前
KMP 又改了编译流程, Separate Compilation 禁止了 `commonMain` 的依赖穿透
android·前端·flutter