Flutter dio Http请求之Cookie管理

在应用开发过程中,我们进行Http通讯时会使用Cookie 进行验证,今天我们就着重讲解Flutter 网络请求插件diocookie使用。

首先,我们要进行插件引用

Dart 复制代码
# HTTP 请求
dio: ^5.1.1
cookie_jar: ^4.0.8
dio_cookie_manager: ^3.0.0

# 获取沙盒路径
path_provider: ^2.1.1

这里为什么要使用path_provider 这个插件呢,下面在cookie的储存时会做介绍。

引用完,我们执行以下命令

Dart 复制代码
pub get

dio 的使用网上有很多详细资料,这里就不做过多介绍,这里着重讲解一下Cookie的使用。

首先,我们创建一个Cookie管理类CookieHandle,具体实现方式和解释会在代码中进行详解。

代码如下:

Dart 复制代码
import 'dart:io';
import 'package:cookie_jar/cookie_jar.dart';
import 'package:path_provider/path_provider.dart';

class CookieHandle {
  //改为使用 PersistCookieJar,在文档中有介绍,PersistCookieJar将 cookie保留在文件中,因此,如果应用程序退出,则cookie始终存在,除             非显式调用delete
  static PersistCookieJar? _cookieJar;

  /// cookie保存,url 为要储存cookie的某个url
  static Future<void> saveCookie(String url) async {
    Uri uri = Uri.parse(url);
    //获取cookies
    Future<List<Cookie>> cookies =
        (await CookieHandle.cookieJar).loadForRequest(uri);
    cookies.then((value) async {
      /// cookie的储存时存在沙盒路径下
      (await CookieHandle.cookieJar).saveFromResponse(uri, value);
    });
  }

  /// cookie获取
  static Future<PersistCookieJar> get cookieJar async {
    if (_cookieJar == null) {
      Directory appDocDir = await getApplicationDocumentsDirectory();
      _cookieJar = PersistCookieJar(storage: FileStorage(appDocDir.path));
    }
    return _cookieJar!;
  }

  /// cookie删除
  static Future<void> delete() async {
    (await CookieHandle.cookieJar).deleteAll();
  }
}

上述便是Cookie的保存、获取和删除。

那我们在dio中如何使用呢

Dart 复制代码
/// 创建Dio网络请求对象
Dio dio = Dio(baseOptions);
/// 获取Cookie,CookieManager 为插件cookie管理类,CookieHandle.cookieJar 是获取Cookie
dio.interceptors.add(CookieManager(await CookieHandle.cookieJar));

到此我们就完成了Cookie的所有用法。

相关推荐
yeziyfx5 小时前
Flutter 宽度充满屏幕的按钮
flutter
里欧跑得慢5 小时前
Flutter 组件 tavily_dart 的适配 鸿蒙Harmony 实战 - 驾驭 AI 搜索引擎集成、实现鸿蒙端互联网知识精密获取与语义增强方案
flutter·harmonyos·鸿蒙·openharmony·tavily_dart
DfromY7 小时前
【随手记】YOCTO下MQTT使用简记
c语言·网络协议
国医中兴7 小时前
Flutter 三方库 pickled_cucumber 的鸿蒙化适配指南 - 玩转 BDD 行为驱动开发、Gherkin 自动化测试实战、鸿蒙级质量守护神
驱动开发·flutter·harmonyos
里欧跑得慢7 小时前
Flutter 三方库 config 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、透明、多源叠加的命令行参数解析与环境配置文件加载引擎
flutter·harmonyos·鸿蒙·openharmony
左手厨刀右手茼蒿7 小时前
Flutter 三方库 flutter_azure_tts 深度链接鸿蒙全场景智慧语音中枢适配实录:强势加载云端高拟真情感发音合成系统实现零延迟超自然多端协同-适配鸿蒙 HarmonyOS ohos
flutter·harmonyos·azure
雷帝木木7 小时前
Flutter 三方库 image_compare_2 的鸿蒙化适配指南 - 实现像素级的图像分块对比、支持感知哈希(pHash)与端侧视觉差异检测实战
flutter·harmonyos·鸿蒙·openharmony·image_compare_2
王码码20357 小时前
Flutter 三方库 sum_types 的鸿蒙化适配指南 - 引入函数式编程思维,让鸿蒙应用的状态处理更严谨
flutter·harmonyos·鸿蒙·openharmony·sum_types
加农炮手Jinx7 小时前
Flutter 三方库 cli_script 鸿蒙化极简命令行执行引擎适配探索:在多维沙盒终端环境注入异构 Shell 串联逻辑彻底拔高全自动化容器脚本运维及-适配鸿蒙 HarmonyOS ohos
运维·flutter·harmonyos
王码码20357 小时前
Flutter 三方库 simple_rsa 的鸿蒙化适配指南 - 实现非线性 RSA 密钥对生成与端侧文本加解密、支持标准公钥指纹验证与高强度数字签名实战
flutter·harmonyos·鸿蒙·openharmony·simple_rsa